2017-02-02 2 views
0

Hallo Ich habe diesen Lambda-Ausdruck in C# .net für generische Liste „Baum“ und ich versuche, etwas ähnlich die in Java 7ähnliche C# .net Lambda-Suche für Java 7 allgemeine Liste

Tree.Where(x => x.LeftChildId == Id || x.RightChildId == Id).FirstOrDefault() 
Tree.Where(x => x.Id == NodesCurrentId).First() 
zu finden

gibt es eine Möglichkeit, dies ohne eine externe Bibliothek zu tun?

+0

Java8 gebracht Lambda-Unterstützung, aber es gibt keine native 'Tree' Struktur – Aaron

+0

Ja @ Aaron ... sorry sollte ich hinzugefügt, um diese Informationen .. Baum ist die generische Liste, in der ich suche ... Liste Baum = neue ArrayList () – NikiUsefi

+1

Ok, dann werden Sie interessiert sein an [Streams] (https://docs.oracle.com/ javase/8/docs/api/java/util/stream/paketzusammenfassung.html). Ich werde eine Antwort schreiben, die seine Verwendung in den speziellen Fällen zeigt, die Sie erwähnt haben, aber Sie sollten auf jeden Fall die Paketdokumentation überprüfen :) – Aaron

Antwort

2

Java 7 hat nicht so etwas Bequemes (Lambdas und LINQ-Äquivalent), diese Dinge wurden in Java 8 hinzugefügt (es klingt also, als wäre es Zeit für ein Upgrade).

Die Java 7 äquivalent eine traditionelle Schleife zu verwenden wäre:

Node result = defaultValue; 
int Id = ...; 
for(Node n : tree) { 
    if(n.LeftChildId == Id || n.RightChildId == Id) { 
     result = n; 
     break; 
    } 
}