Ant*_*arf 3 java collections java-8 java-stream
我想把变成一个List不同的东西.
我有一个像这样的POJO类(我在这里删除了getters/setters):
public class Person {
private String personId;
private String registrationId;
}
Run Code Online (Sandbox Code Playgroud)
A Person(personId)可以有很多registrationId,因此不同的Person实例可以引用同一个真实的人(但具有不同的registrationId).
我有List<Person> persons以下3个元素:
persons = [{"person1", "regis1"}, {"person1", "regis2"}, {"person2", "regis1"}];
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西(这样每个键都指的是一个人,每个人都得到了registrationId列表):
Map<String, List<String>> personsMap = [ "person1" : {"regis1", "regis2"}, "person2" : {"regis2"}]
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做:
Map<String, List<Person>> map = persons.stream().collect(Collectors.groupingBy(Person::getPersonId));
Run Code Online (Sandbox Code Playgroud)
但我得到了一个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())));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |