Bei der Suche nach bestimmten Objekt in einer Liste von Attribut
Habe ich eine Liste:
List<UserItem> userList = new ArrayList<>();
Wo ich Folgendes hinzufügen:
User father = new User();
father.setName("Peter");
UserItem parent = new UserItem(father, null);
userList.add(parent);
Ich dann erstellen Sie einen anderen Benutzer:
User daughter = new User();
daughter.setName("Emma");
UserItem child = new UserItem(daughter, <OBJECT IN LIST WHERE NAME IS "PETER">);
userList.add(child);
Allerdings brauche ich, um den text zu ändern, eingewickelt in <>
oben auf das parent-Objekt Hinzugefügt habe ich vor (der Vater), spezifiziert durch den Namen ("Peter" in diesem Fall).
Wie finde ich ein Objekt in einer Liste nach einem bestimmten Attribut? In meinem Fall, wie kann ich das Objekt finden Sie in der Liste den Namen "Peter"?
Bitte beachten Sie, dass ich hinzufügen, die Hunderte, manchmal Tausende von verschiedenen Benutzern, wie diese zu der Liste. Jeder "Stamm" hat einen eindeutigen Namen.
- Sind Sie sicher, dass Sie eine "Liste"? Es ist durchaus möglich, zum iterieren über eine Liste, um die spezifische element, das Sie wollen, aber das ist nicht wirklich der beste Weg, Sie zu verwenden. Es klingt wie Sie wollen ein
Map<String, UserItem>
. - Ich Stimme mit ruakh. Um die Frage zu beantworten aber: Sie müssen die Schleife über die Liste, und suchen Sie den Benutzer mit "Peter" als seinen Namen. Sicherlich haben Sie getan, dass vor, in Ihrem ersten Algorithmus natürlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die offensichtliche Lösung wäre die Iteration über die Liste und wenn die Bedingung erfüllt ist, das Objekt zurückgeben:
Und Sie können
filter
(Java 8):erhalten Sie eine Liste mit allen "peter" Benutzer.
Als Vorschlag in die Kommentare, ich denke, mit
Map
ist eine bessere option hier.Antwort auf Ihre Frage ist hier: https://stackoverflow.com/a/1385698/2068880
Jedoch, wie ruakh vorgeschlagen, ist es angemessener zu verwenden
Map<String, UserItem>
um es schneller zu machen. Sonst wird es zu Durchlaufen aller Objekte in der Liste zu finden, die Benutzer mit Namen "Peter".Anderen Weg mit parallelStream mit findAny