#java #list #java-stream
Вопрос:
У меня есть List<Country>
, и это есть List<City>
. Я хочу получить UUID
список всех городов в списке стран с помощью Java stream(), но я не могу их правильно отобразить. Обычно я мог бы получить UUID
поле списка, но есть каскадный список, и я не могу найти для этого правильное решение. Итак, как я могу решить эту проблему? Должен ли я использовать flatMap
?
List<UUID> cityUUIDList = countryList.stream().map(CityDTO::getUuid)
.collect(Collectors.toList());
Комментарии:
1.
countryList.stream().flatMap(c -> c.getCities().stream()).map(City::getUuid).collect(Collectors.toList());
Ответ №1:
Вы также можете получить список UUID
, подобный этому:
List<UUID> cityUUIDList = countryList.stream()
.map(Country::getCities)
.flatMap(List::stream)
.map(CityDTO:::getUuid)
.collect(Collectors.toList());
Ответ №2:
Вам нужно использовать этот flatMap()
метод, предполагая, что у вас есть что-то вроде:
class Country {
List<CityDTO> cities = new ArrayList<>();
}
class CityDTO {
UUID uuid;
UUID getUuid() {
return uuid;
}
}
List<UUID> cityUUIDList = countryList.stream()
.flatMap(c -> c.cities.stream())
.map(CityDTO::getUuid)
.collect(Collectors.toList());