你可以这样做:
Map<State, Map<City, List<Town>>> stateToCitiesToTowns =
country.getStates().stream()
.collect(Collectors.toMap(state -> state, state -> state.getCities().stream()
.collect(Collectors.toMap(city -> city, City::getTowns))));
System.out.println(stateToCitiesToTowns);
Map<String, Map<String, List<String>>> stateToCitiesToTownNames =
country.getStates().stream()
.collect(Collectors.toMap(State::getName, state -> state.getCities().stream()
.collect(Collectors.toMap(City::getName, city -> city.getTowns().stream()
.map(Town::getName)
.collect(Collectors.toList())))));
System.out.println(stateToCitiesToTownNames);
输入:
Country country = new Country("CountryA", Arrays.asList(
new State("StateA", Arrays.asList(
new City("cityA", Arrays.asList(
new Town("townA", 4),
new Town("townB", 5),
new Town("townC", 42),
new Town("townD", 67)
)),
new City("cityB", Arrays.asList(
new Town("townE", 65),
new Town("townF", 14),
new Town("townG", 24),
new Town("townH", 33)
)))),
new State("StateB", Arrays.asList(
new City("cityC", Arrays.asList(
new Town("townI", 9),
new Town("townJ", 5),
new Town("townK", 12),
new Town("townL", 4)
)),
new City("cityD", Arrays.asList(
new Town("townM", 5),
new Town("townN", 7),
new Town("townO", 24),
new Town("townP", 6)
))))));
输出(很长,因为键和值都有相同的列表):
{State(name=StateB, cities=[City(name=cityC, towns=[Town(name=townI, population=9), Town(name=townJ, population=5), Town(name=townK, population=12), Town(name=townL, population=4)]), City(name=cityD, towns=[Town(name=townM, population=5), Town(name=townN, population=7), Town(name=townO, population=24), Town(name=townP, population=6)])])={City(name=cityC, towns=[Town(name=townI, population=9), Town(name=townJ, population=5), Town(name=townK, population=12), Town(name=townL, population=4)])=[Town(name=townI, population=9), Town(name=townJ, population=5), Town(name=townK, population=12), Town(name=townL, population=4)], City(name=cityD, towns=[Town(name=townM, population=5), Town(name=townN, population=7), Town(name=townO, population=24), Town(name=townP, population=6)])=[Town(name=townM, population=5), Town(name=townN, population=7), Town(name=townO, population=24), Town(name=townP, population=6)]}, State(name=StateA, cities=[City(name=cityA, towns=[Town(name=townA, population=4), Town(name=townB, population=5), Town(name=townC, population=42), Town(name=townD, population=67)]), City(name=cityB, towns=[Town(name=townE, population=65), Town(name=townF, population=14), Town(name=townG, population=24), Town(name=townH, population=33)])])={City(name=cityB, towns=[Town(name=townE, population=65), Town(name=townF, population=14), Town(name=townG, population=24), Town(name=townH, population=33)])=[Town(name=townE, population=65), Town(name=townF, population=14), Town(name=townG, population=24), Town(name=townH, population=33)], City(name=cityA, towns=[Town(name=townA, population=4), Town(name=townB, population=5), Town(name=townC, population=42), Town(name=townD, population=67)])=[Town(name=townA, population=4), Town(name=townB, population=5), Town(name=townC, population=42), Town(name=townD, population=67)]}}
输出:
{
StateA=
{
cityA=[townA, townB, townC, townD],
cityB=[townE, townF, townG, townH]
},
StateB={
cityC=[townI, townJ, townK, townL],
cityD=[townM, townN, townO, townP]
}
}