Использование геттеров из вложенной структуры в потоках - PullRequest
1 голос
/ 13 мая 2019

Я конвертирую List<City> в Map<CityType, Set<City>>.

Город в нем имеет поля типа CityIdentifier, State, Latitude и т. Д.

CityIdentifier, в нем есть cityName &cityType.

Для приведенного выше преобразования для Collectors.groupingBy мне нужна функция, подобная City::getCityType.Могу ли я использовать геттер из CityIdentifier, то есть что-то вроде City::getCityIdentifier.getCityType?

1 Ответ

2 голосов
/ 13 мая 2019

Вы не можете использовать ссылку на метод в этом примере.

Вместо этого используйте лямбда-выражение:

city -> city.getCityIdentifier().getCityType()

И полный конвейер:

Map<CityType, Set<City>> map =
    list.stream()
        .collect(Collectors.groupingBy(city -> city.getCityIdentifier().getCityType(),
                                       Collectors.toSet()));
...