如何根据List中的某个或者多个字段来进行去重
1、推荐使用java8的新特性,Stream流
如下例所示:根据用户的性别和地址进行去重
package org.springblade.dataReporting.test;
import org.springblade.dataReporting.dto.User;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import java.util.stream.Collectors;
public class test {
public static void main(String[] args) {
List<User> lists =new ArrayList<>();
User user1=new User("张三",18,"北京","男");
User user2=new User("李四",19,"杭州","男");
User user3=new User("小芳",13,"深圳","女");
User user4=new User("小花",11,"杭州","女");
User user5=new User("小丹",19,"深圳","女");
lists.add(user1);
lists.add(user2);
lists.add(user3);
lists.add(user4);
lists.add(user5);
lists = lists.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getSex() + "#" + o.getAddr()))), ArrayList::new));
for (User user:lists){
System.out.println(user);
}
}
}
输出结果如下
简单又高效,嘻嘻嘻嘻嘻嘻~~~~~~~~