2016-03-30 3 views
0

Say У меня есть класс Student содержат в полях: Имя и фамилияКак получить общее поле из списка объекта

то я использую это, чтобы создать два списка

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

Как бы я идти об использовании этих списков, чтобы получить все студенты с таким же именем из списка:

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

Would делает для петли на обоих списка и делает classroomA.getfirstName().equals(classroomB.getfirstName()) единственный способ?

+0

Что означают эти квадратные скобки? – Excelan

+0

@Excelan это просто означает его объект Student [firstName, surname]. поэтому classroomA имеет двух учеников и классной комнатыB имеет трех студентов. – obsessiveCookie

ответ

0

Use Java 8 Lambdas.

Ниже кода получает все Bens из списка. Если вы хотите получить конкретное поле от объекта (которое является преобразованием), используйте карту в потоке фильтра.

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

А интересно. Спасибо за это @ K139, я посмотрю на Lambdas – obsessiveCookie