Ответ 1
Кажется, что простой вариант groupingBy
- это то, что вам нужно:
Map<String, List<Pojo>> map = pojos.stream().collect(Collectors.groupingBy(Pojo::getKey));
Я хочу взять List<Pojo>
и return
Map<String, List<Pojo>>
где ключ Map
является String
значением в Pojo
, пусть называет его String key
.
Чтобы уточнить, учитывая следующее:
Pojo 1: Ключ: значение: 1
Pojo 2: Key: значение: 2
Pojo 3: Ключ: b значение: 3
Pojo 4: Ключ: b значение: 4
Мне нужна Map<String, List<Pojo>>
с keySet()
размером 2, где ключ "a" имеет Pojos 1 и 2, а ключ "b" имеет pojos 3 и 4.
Как я могу достичь этого, используя Java 8 lambdas?
Кажется, что простой вариант groupingBy
- это то, что вам нужно:
Map<String, List<Pojo>> map = pojos.stream().collect(Collectors.groupingBy(Pojo::getKey));
Кроме того, если вы хотите вернуть подобную карту, но вместо целого Pojo вы хотели, чтобы значения карты были некоторым свойством Pojo, вы бы сделали так:
Map<String, List<String>> map = pojos.stream()
.collect(
Collectors.groupingBy(
Employee::getKey, Collectors.mapping(
Pojo::getSomeStringProperty, Collectors.toList())));