Скажем, у меня есть список объектов страны, которые содержат списки языков, на которых говорят в этой стране, например:
class Country {
List<String> languages;
}
Я хотел бы создать карту в следующем формате:
Map<String, List<Country>>
, так что каждый язык отображается в список объектов Country. E.g.:
"French" -> [Country:France, Country:Canada],
"English" -> [Country:UK, Country:US]
Производительность является проблемой здесь, поэтому я хотел бы избежать нескольких итераций и поисков. Я пытался использовать groupingBy
, но как мне flatMap
набор ключей?
Пример, это приводит к Map<List<String>, List<Country>>
:
countries.stream()
.collect(Collectors.groupingBy(country -> country.getLanguages(), toList()));