Группировка в потоке Java 8 в пользовательский класс, а не в исходный класс - PullRequest
0 голосов
/ 13 мая 2019

У меня есть класс А., в котором есть несколько полей.

Class A{
 String type;
 String x;
 String y;
}

Class B{
    String x;
    String y;

}

Допустим, у нас есть список List<A>.Используя Collectors.groupingBy(), возможно ли получить вывод Map<String,List<B>> вместо Map<String,List<A>>?где key в Map - это type поле в Class A.

1 Ответ

1 голос
/ 13 мая 2019

Конечно - просто подключите mapping() коллектор к groupingBy() коллектору.

Map<String,List<B>> map =
    listA.stream()
         .collect(Collectors.groupingBy(A::getType,
                                        Collectors.mapping(a->new B(a.getX(),a.getY()),
                                                           Collectors.toList())));
...