So erhalten Sie die Attributliste aus der ArrayList von Objekten

7

Angenommen, ich habe ein Objekt, das wie folgt aussieht:

%Vor%

Wenn ich eine Arraylist vom Typ Obj erstelle und sie befülle, gibt es eine Möglichkeit, eine Liste aller Objekte im foo-Attribut des Arrays von der ArrayList zurückzugeben?

EDIT: Ich hätte klarer sein sollen, ich wollte das nicht per Iteration machen

    
ninjasense 26.01.2011, 17:04
quelle

6 Antworten

7

Sie müssen durch Ihre List<Obj> iterieren und die foo-Einträge in eine neue List

sortieren

z.B.

%Vor%

oder für Java 8 und darüber hinaus, verwenden Sie Streams so:

%Vor%     
Brian Agnew 26.01.2011, 17:07
quelle
10

Versuchen Sie Folgendes:

%Vor%

Verwenden Sie Apache Commons Sammlungs-API.

    
Surodip 22.11.2013 18:33
quelle
4

Mit Guava können Sie eine Ansicht der foo -Eigenschaft der Objekte in List mit Lists.transform wie folgt:

%Vor%

Im Gegensatz zu anderen Lösungen ist dies eine reine Ansicht von List<Obj> und als solche weist sie keine ganze separate ArrayList oder einige solche im Speicher zu und kann in fast keiner erstellt werden Zeit unabhängig von der Größe Ihres List<Obj> . Wenn Sie das ursprüngliche List<Obj> ändern, spiegelt die foos -Liste außerdem diese Änderung wider.

In Java 8 (irgendwann im Jahr 2012) wird dies mit Lambda-Ausdrücken und Methodenreferenzen viel einfacher. Sie können so etwas tun:

%Vor%     
ColinD 26.01.2011 17:14
quelle
1

Die Antwort von @Surodip verwendet eine kompakte Lösung, die auf Apache Commons-Sammlungen basiert. Diese Lösung ist jedoch nicht typsicher, da der Transformer die Eigenschaft über den Zeichenfolgenausdruck referenziert: TransformerUtils.invokerTransformer("getName")

Hier ist eine ausführlichere, aber typensichere Lösung mit Apache Commons Collections:

%Vor%

Die obigen Lösungen verwenden die Apache Commons Collection Version & gt; = 4, die Generics für die Typensicherheit unterstützt.

Unten ist die weniger typsichere Version für Apache Collections Version & lt; 4, die keine Generika verwendet:

%Vor%     
jbandi 01.06.2015 10:47
quelle
0

Iteriere durch die Liste und erstelle einen Satz aller foo Eigenschaften.

    
camickr 26.01.2011 17:07
quelle
0

so etwas?

%Vor%     
John Gardner 26.01.2011 17:10
quelle

Tags und Links