Wählen Sie Objekt aus Objekt' s Liste mit lambda-Ausdruck
Hallo Leute ich habe ein List<User>
- und ich möchte hinzufügen, eine Methode, die ein bestimmter Benutzer über eine Id. Ich will machen, dass die Verwendung von lambda-Ausdrücken, so habe ich dies versucht aber es funktioniert nicht.
...
List<User> user = users.stream().filter(x -> x.id == id).collect(Collectors.toList());
return user[0];
Dieser code doesnt compile und gib mir diese Fehler:
The method stream() is undefined for the type List<User>
Lambda expressions are allowed only at source level 1.8 or above *
Collectors cannot be resolved
- Ich bin mit eclipse 4.4.3 Kepler und installiert ich habe java 8 in die Maschine und das plugin für die Arbeit mit java8 in eclipse
- die überprüfung, ob die Ebene.. Goto Projekt - >Eigenschaften - >Java-Compiler. Compliance-Niveau von 1,8
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tipp: möchten Sie nur erste element matchig eine Bedingung, die nicht sammeln Sie alle Elemente auf der Liste (es ist ein bisschen übertrieben), verwenden Sie
findFirst()
Methode statt:Beachten Sie, dass
findFirst()
zurück Optional Objekt, undget()
wird eine exception werfen wenn es kein solches element.findFirst()
Methode 🙂Haben Sie zwei Probleme.
Haben Sie zum aktivieren von Java 1.8. Compliance-Level in Eclipse und erfolgreich zu importieren, die Java8 spezifische Klassen/Schnittstellen. Was Sie tun müssen, ist folgende:
Properties
Java Compiler
im Fenster, das geöffnet wurdeJDK Compliance
deaktivieren Sie dieUse compliance level from execution environment....
Kontrollkästchen, und wählen Sie dann1.8
von derCompliance level
dropdown.OK
und fertig.Nachdem Sie das tun, werden Sie feststellen, dass die
return
Anweisung nicht kompilieren. Dies ist, weil dieList
Objekt in Java ist und nicht ein array, und daher Aussagen wieuser[0]
sind ungültig für Listen. Was Sie tun müssen, ist: