@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private String name;
private String sex;
private Integer age;
}
public static void Test()
{
ArrayList listStudent = new ArrayList<>();
listStudent.add(new Student("小明","男",10));
listStudent.add(new Student("小花","女",8));
listStudent.add(new Student("小李","男",9));
listStudent.add(new Student("小刚","男",10));
listStudent.add(new Student("小红","女",8));
listStudent.add(new Student("小明","男",9));
//按照age属性,对List进行去重处理
listStudent = listStudent.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getAge))), ArrayList::new));
//打印结果
listStudent.forEach(Student-> System.out.println(Student.toString()));
}
//运行结果
Student(name=小花, sex=女, age=8)
Student(name=小李, sex=男, age=9)
Student(name=小明, sex=男, age=10)
//对于多属性去重
public static void Test2()
{
ArrayList listStudent = new ArrayList<>();
listStudent.add(new Student("小明","男",1));
listStudent.add(new Student("小明","男",6));
listStudent.add(new Student("小红","女",2));
listStudent.add(new Student("小红","女",5));
listStudent.add(new Student("小李","男",3));
listStudent.add(new Student("小李","男",4));
//根据name和sex两个属性去重,若两个属性都相同,则认为为相同
List listTemp = listStudent.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getName() + ";" + o.getSex()))), ArrayList::new));
//打印结果
listTemp.forEach(Student-> System.out.println(Student.toString()));
}
//运行结果
Student(name=小明, sex=男, age=1)
Student(name=小李, sex=男, age=3)
Student(name=小红, sex=女, age=2)