[英]How can I group Stream<Person> into Stream<List<Person>>, not into Map<String, <List<Person>>?
[英]Ho to convert an Arraylist<Person> to Map<String, List<Long>> with Stream?
我有一个人ArrayList
List<Person> personList = getPersonList();
我想创建一个Map<String, List<Long>>
的映射
基于Person :: getDepartment的键和基于时间戳List<Long>
的值Person::getTimestamp
List<Person> personList
有多个Person记录,因此我需要删除Person::getDepartment
上的重复Person::getDepartment
,但由于Map不允许键重复项,所以我认为这应该不是问题。
我可以通过forach循环做到这一点,但是我的问题是我可以只使用一条流吗?
public class Person {
private String department;
private long timestamp;
//getters and setters
}
在收集中,使用groupingBy()
按部门mapping()
Person
groupingBy()
,然后使用mapping()
将Person
映射到其时间戳。
Map<String, List<Long>> map =
personList.stream()
.collect(groupingBy(
Person::getDepartment,
mapping(Person::getTimestamp, toList())
)
);
并添加以下导入:
import static java.util.stream.Collectors.mapping;
import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.toList;
要不就 :
import static java.util.stream.Collectors.*;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.