如何根据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);
		}
	}

}

输出结果如下

 简单又高效,嘻嘻嘻嘻嘻嘻~~~~~~~~