У меня есть две карты:
Map<String, Student> students1 = new HashMap<>();
students1.put("New York", new Student("John"));
students1.put("Canada", new Student("Robert"));
Map<String, Student> students2 = new HashMap<>();
students2.put("Chicago", new Student("Nick"));
students2.put("New York", new Student("Ann"));
В результате я хочу получить это:
{Canada=Robert, New York=[John, Ann], Chicago=Nick}
Я могу легко сделать это так:
Map<City, List<Student>> allStudents = new HashMap<>();
students1.forEach((currentCity, currentStudent) -> {
allStudents.computeIfPresent(currentCity, (city, studentsInCity) -> {
studentsInCity.add(currentStudent);
return studentsInCity;
});
allStudents.putIfAbsent(currentCity, new ArrayList<Student>() {
{
add(currentStudent);
}
});
});
// then again for the second list
Но есть ли другой способ объединить множество коллекций (в данном случае две)? Есть ли что-то вроде короткого лямбда-выражения или метода из некоторых интегрированных библиотек java, et c ...?