У меня есть следующие два списка, и мне нужно присоединиться к нему таким образом, чтобы у каждого Лица были все Книги и данные об изменениях во время объединения:
Примечание: Как это сделатьработа за рамками for() loop
?
List<Person> personList = new ArrayList<>()
personList.add(new Person("John", "Dou"))
personList.add(new Person("Ben", "Gun"))
personList.add(new Person("Andre", "McDonald"))
List<Books> booksList = new ArrayList<>()
booksList.add(new Book("Harry Potter part_1", true)
booksList.add(new Book("Harry Potter part_2", true)
booksList.add(new Book("Harry Potter part_3", true)
booksList.add(new Book("Harry Potter part_4", true)
booksList.add(new Book("Harry Potter part_5", false)
Условия:
Потребность в "Джоне Доу": все книги true
А для другого человека только 3 Книги составляют true
Также есть класс Marker
, который содержит как Песон как Книги:
new Marker( new Person, new Book, int )
Вотмой код, но не понимаюОн меняется следующим образом:
List<Marker> joinList = new ArrayList<>()
for(int i = 0; i<personList.size(); i++) {
for(int k = 0; k<booksList.size(); k++) {
If(personList.get(i).getName().equals("John") {
booksList.get(k).setReading(true);
} else {
if(k < 3 && !personList.get(i).getName().equals("John")){
booksList.get(k).setReading(true);
} else {
booksList.get(k).setReading(false)
}
}
joinList.add(new Marker(personList.get(i), booksList.get(k), k))
}
}
Он должен работать за рамками for()
цикл
joinList.forEach( (x) ->
System.out.println(x.getPerson.getName() + " " +
x.getBook().getName()+" "+
x.getBook().getReading() ))
Но он делает только 3 книги true
Текущий результат:
Выход
John Dou : Harry Potter part_1", true
John Dou : Harry Potter part_2", true
John Dou : Harry Potter part_3", true
John Dou : Harry Potter part_4", false
John Dou : Harry Potter part_5", false
Ben Gun : "Harry Potter part_1", true
Ben Gun : "Harry Potter part_2", true
Ben Gun : "Harry Potter part_3", true
Ben Gun : "Harry Potter part_4", false
Ben Gun : "Harry Potter part_5", false
Andre McDonald : "Harry Potter part_1", true
Andre McDonald : "Harry Potter part_2", true
Andre McDonald : "Harry Potter part_3", true
Andre McDonald : "Harry Potter part_4", false
Andre McDonald : "Harry Potter part_5", false
==== Ожидаемый результат:====
Выход
John Dou : Harry Potter part_1", true
John Dou : Harry Potter part_2", true
John Dou : Harry Potter part_3", true
John Dou : Harry Potter part_4", true
John Dou : Harry Potter part_5", true
Ben Gun : "Harry Potter part_1", true
Ben Gun : "Harry Potter part_2", true
Ben Gun : "Harry Potter part_3", true
Ben Gun : "Harry Potter part_4", false
Ben Gun : "Harry Potter part_5", false
Andre McDonald : "Harry Potter part_1", true
Andre McDonald : "Harry Potter part_2", true
Andre McDonald : "Harry Potter part_3", true
Andre McDonald : "Harry Potter part_4", false
Andre McDonald : "Harry Potter part_5", false
В будущем я буду использовать joinList
в stream().Collectors
, чтобы получить следующий результат:
John Dou : "Harry Potter part_1", "Harry Potter part_2", "Harry Potter part_3", "Harry Potter part_4", "Harry Potter part_5"
Ben Gun : "Harry Potter part_1", "Harry Potter part_2", "Harry Potter part_3"
Andre McDonald : "Harry Potter part_1", "Harry Potter part_2", "Harry Potter part_3"