Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。
在 Java 8 中, 集合接口有两个方法来生成流:
-
stream() − 为集合创建串行流。
-
parallelStream() − 为集合创建并行流。
直接上代码
分类
Map<String, List<Person>> mapPerson = list.stream().collect(
Collectors.groupingBy(
person -> person.getName() + ',' + person.getAge()
));
对结果处理
for (Map.Entry<String, List<Person>> mapR : mapPerson.entrySet()) {
System.out.println("Person----key:" + mapR.getKey() + "value:" + mapR.getValue());
}
去重
List<Person> uniqueName = list.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new)
);
对结果进行处理
for (Person person: uniqueName) {
System.out.println(person.toString());
}