2016-03-30 13 views
0

sagen, dass ich eine Klasse von Studenten haben enthalten in den Feldern: und ZunameWie das gemeinsame Feld aus einer Liste von Objekt erhalten

ich diese dann zwei Listen

List<Student> classroomA = {["Ben","oreilly"], ["Jenna","Birch"]} 
List<Student> classroomB = {["Alan","Messing"], ["Ben", "Mancini"], ["Helena","Wong"]} 

Wie würde ich erstellen verwenden gehe über diese Listen mit allen Studenten mit dem gleichen Namen aus der Liste zu erhalten:

List<Student> commonStudents = {["Ben","oreilly"],["Ben", "Mancini"]} 

würde sowohl Liste für Schleife zu tun und macht ein classroomA.getfirstName().equals(classroomB.getfirstName()) der einzige Weg?

+0

Was bedeuten diese Klammern hier? – Excelan

+0

@Excelan es bedeutet nur ein Objekt Student [Vorname, Nachname]. also klassenzimmerA hat zwei schüler und klassenzimmerB hat drei schüler. – obsessiveCookie

Antwort

0

Use Java 8 Lambdas.

Im Folgenden Code wird all Bens aus der Liste. Wenn Sie ein bestimmtes Feld vom Objekt (das eine Transformation ist) möchten, verwenden Sie die Karte im Filter-Stream.

List<Student> AllBens = classA.stream().filter(Objects::nonNull). 
     filter(k -> StringUtils.isNotEmpty(k.getName()) && k.getName().equalsIgnoreCase("Ben")).collect(Collectors.toList()); 
+0

Ah interessant. Danke für dieses @ K139, ich werde nach Lambdas schauen – obsessiveCookie

Verwandte Themen