Trudność przy definiowaniu wyrażeniu lambda

0

Proszę o pomoc. Dopiero zaczynam a niezbyt to rozumiem, dokumentacja nie jest dla mnie wystarczająco jasna.

// pelnaLista to lista wypełniona jakimiś przykładowymi danymi
ArrayList<Zwierze> lista= new ArrayList<Zwierze>();
for (Zwierze aa : pelnaLista) {
	list = aa-> aa.Rasa() == "lew" && aa.Wiek() > 1 && aa.Płeć() == 1;
}

Chce pobrać wszystkie zwierzaki które są lwami, mają wiek > 1 i płeć == 1. Jak to poprawić? To wyrażenie lambda nie działa mi.
Dodatkowo nie wiem czy dobrze, to robię, że rezultat do listy pakuje. Bo ja chce pobrać tylko wyselekcjonowanych zwierzęta i wywołać na zwierzętach metodę "rycz". Da się tak od razu bez pakowania do listy i ponownego foreach?

1

Jeśli chcesz zebrać listę to powinieneś zrobić coś w stylu:

List<Zwierze> lista = pelnaLista.toStream().filter(aa-> aa.Rasa().equals("lew") && aa.Wiek() > 1 && aa.Płeć() == 1).collect(Collectors.toList());

A jeśli tylko wywołać metodę to wtedy:

pelnaLista.toStream().filter(aa-> aa.Rasa().equals("lew") && aa.Wiek() > 1 && aa.Płeć() == 1).forEach(Zwierze::rycz);

Nie testowałem ani jednego, ani drugiego. Nie mam Javy 8 zainstalowanej :(

0

Niestety nie kompiluje mi się to. Otrzymuję błąd w miejscu pogrubienia:

List<Zwierze> lista = pelnaLista.toStream().filter(**aa-**> aa.Rasa().equals("lew") && aa.Wiek() > 1 && aa.Płeć() == 1).collect(Collectors.toList());

Multiple markers at this line
- Syntax error on token "-", -- expected
- Type mismatch: cannot convert from
Zwierze to int

0
import java.util.*;

public class Main {  
  static class Zwierze {
    String Rasa() {
      return "lew";
    }
    
    int Plec() {
      return 1;
    }
    
    int Wiek() {
      return 2;
    }
    
    void rycz() {
      System.out.println("rycze");
    }
  }
  
  public static void main(String[] args) {
    List<Zwierze> pelnaLista = Arrays.asList(new Zwierze());
    pelnaLista.stream().filter(aa -> aa.Rasa().equals("lew") && 
                                 aa.Wiek() > 1 && aa.Plec() == 1)
      .forEach(Zwierze::rycz);
  }
}

Testowane na www.tryjava8.com

0

Dziękuje bardzo :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1