Collectors.groupingBy mapping collectingAndThen 去重 list
时间: 2023-08-31 12:12:59 浏览: 152
list的排序和去重
5星 · 资源好评率100%
Collectors.groupingBy(mapping, collectingAndThen)是一种用于对列表进行分组、映射和去重的操作。首先,使用mapping函数对列表中的元素进行映射,然后使用collectingAndThen函数对映射结果进行处理和去重。
例如,假设有一个包含学生对象的列表studentList,每个学生对象都有一个属性stuName。我们可以使用Collectors.groupingBy(mapping, collectingAndThen)来根据学生姓名对列表进行分组,并去除重复的学生对象。
以下是一个示例代码:
```java
List<Student> studentList = new ArrayList<>();
studentList.add(new Student("111", 132774, 12, "1"));
studentList.add(new Student("123", 13556, 15, "1"));
studentList.add(new Student("1146", 13165142, 16, "1"));
studentList.add(new Student("111", 136542, 14, "2"));
studentList.add(new Student("141321", 5641542, 15, "2"));
studentList.add(new Student("1454135", 2222542, 15, "2"));
List<Student> collect = studentList.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getStuName))),
ArrayList::new
)
);
System.out.println(collect.size()); // 输出去重后的学生数量
```
在上述代码中,我们使用Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getStuName)))将学生对象按照姓名进行去重,并将结果收集到一个新的ArrayList中。最后,我们输出去重后的学生数量。
请注意,这里的Comparator.comparing(Student::getStuName)是用于比较学生姓名的比较器,可以根据需要进行自定义。
阅读全文