Пожалуйста, помогите мне сгруппировать объекты с внутренним объектом по двум полям.
У меня есть List<Man>
, и мне нужно сгруппировать их по двум встроенным полям адресного объекта? Я хочу получить следующую структуру в ответе Map<String, Map<String, List<Man>>>
, где первая строка - город, а вторая строка - улица
public class Man {
private String name;
private Address address;
public Man(String name, Address address) {
this.name = name;
this.address = address;
}
}
public class Address {
private String city;
private String street;
public Address(String city, String street) {
this.city = city;
this.street = street;
}
}
public static void main(String[] args) {
List<Man> mans = new ArrayList<>();
mans.add(new Man("Jonh", new Address("NY", "123 street")));
mans.add(new Man("Alex", new Address("Denver", "6 street")));
mans.add(new Man("Kate", new Address("NY", "123 street")));
mans.add(new Man("Mary", new Address("Denver", "12 street")));
//How can I get the following answer?
//Map<String, Map<String, List<Man>>>, where first string is a city, and second string is street
// NY -
// |
// "123 street" -
// |
// Man(Jonh...)
// Man(Kate...)
// Denver -
// |
// "6 street" -
// |
// Man(Alex...)
// |
// "12 street" -
// |
// Man(Mary...)
}