我有一个 Person ArrayList
List<Person> personList = getPersonList();
我想创建一个Map<String, List<Long>>
地图
键基于 Person::getDepartment 和值基于时间戳List<Long>
Person::getTimestamp
List<Person> personList
中有多个 Person 记录,所以我需要删除Person::getDepartment
上的重复项,但由于地图不允许键重复,我认为这应该不是问题。
我可以用 forach 循环完美地做到这一点,但我的问题是我可以只用一个流做到这一点吗?
public class Person {
private String department;
private long timestamp;
//getters and setters
}
在集合中,使用 groupingBy()
按部门和mapping()
对Person
进行分组,以将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.*;