Как я могу преобразовать Набор объектов в Карту полей Объекта в набор полей, используя потоки Java? - PullRequest
0 голосов
/ 02 июля 2019

Если у меня есть класс A

public class A {
   String name;

   String value;
}

У меня есть набор, который я хочу преобразовать в Map<String, Set<String>>, который отображает A.name в набор A.value, используя потоковый класс, поскольку многие экземпляры A будут иметь одно и то же имя String, но ни один будет иметь одинаковое значение String. Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

Чтобы создать Map<String, Set<String>>, который сопоставляет A.name с набором A.value, вам необходимо использовать следующие методы:

Map<String, Set<String>> map = set.stream()
        .collect(Collectors.groupingBy(A::getName,
                                       Collectors.mapping(A::getValue,
                                                          Collectors.toSet())));

Код использует ссылки на методы для получения методов в вашем классе A, хотя вместо этого можно использовать лямбда-выражения, например, A::getName можно заменить на o -> o.name.

0 голосов
/ 02 июля 2019

Вы можете создать пустую Карту перед преобразованием, тогда преобразование будет собираться с использованием анонимной функции, которая проверяет карту, чтобы определить, следует ли добавить новый набор или обновить существующий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...