我想转List
变成不同的东西。
我有一个像这样的 POJO 类(我在这里删除了 getters/setters):
public class Person {
private String personId;
private String registrationId;
}
A Person
(personId) 可以有多个registrationId,如此不同Person
实例可能引用同一个人(但具有不同的 registrationId)。
我有一个 List<Person> persons
如下 3 个元素:
persons = [{"person1", "regis1"}, {"person1", "regis2"}, {"person2", "regis1"}];
我想要这样的东西(这样每个键都指向一个人,并且对于每个人我都得到了 registrationId 列表):
Map<String, List<String>> personsMap = [ "person1" : {"regis1", "regis2"}, "person2" : {"regis2"}]
我知道我可以做这样的事情:
Map<String, List<Person>> map = persons.stream().collect(Collectors.groupingBy(Person::getPersonId));
但我得到了一个Map<String,List<Person>>
我想要一个 Map<String,List<String>>
有什么想法吗?
谢谢
最佳答案
使用Collectors.mapping
将Person
实例映射到相应的registrationId String
:
Map<String, List<String>> map =
persons.stream()
.collect(Collectors.groupingBy(Person::getPersonId,
Collectors.mapping(Person::getRegistrationId,
Collectors.toList())));
关于Java8 : stream and map transformations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52642822/