直接上代码,记录下,方便下次直接用:
1 @Test 2 public void distinctMyUser() { 3 List<MyUser> list1 = new ArrayList<>(); 4 MyUser user1 = new MyUser(); 5 user1.setUserName("zhangsan"); 6 user1.setPassWord("1234567"); 7 list1.add(user1); 8 9 MyUser user2 = new MyUser(); 10 user2.setUserName("zhangsan"); 11 user2.setPassWord("123456"); 12 list1.add(user2); 13 14 MyUser user3 = new MyUser(); 15 user3.setUserName("lisi"); 16 user3.setPassWord("123456"); 17 list1.add(user3); 18 19 MyUser user4 = new MyUser(); 20 user4.setUserName("lisi"); 21 user4.setPassWord("123456"); 22 list1.add(user4); 23 24 for (MyUser b : list1) { 25 System.out.println("去重前:" + b.toString()); 26 } 27 28 //去重 29 list1 = removeDuplicateOutputField(list1); 30 31 for (MyUser b : list1) { 32 System.out.println("去重后:" + b.toString()); 33 } 34 } 35 36 /** 37 * 根据list中对象某些字段去重 38 * @param list 需要去重的list 39 * @return 返回去重后的list 40 */ 41 private static List<MyUser> removeDuplicateOutputField(List<MyUser> list) { 42 Set<MyUser> set = new TreeSet<>(new Comparator<MyUser>() { 43 @Override 44 public int compare(MyUser myUser, MyUser myUserNew) { 45 int compareToResult = 1;//==0表示重复 46 //需要去重的字段在此处比较过滤 47 if(StringUtils.equals(myUser.getUserName(), myUserNew.getUserName()) && 48 StringUtils.equals(myUser.getPassWord(), myUserNew.getPassWord())) { 49 compareToResult = 0; 50 } 51 return compareToResult; 52 } 53 }); 54 set.addAll(list); 55 return new ArrayList<>(set); 56 } 57 58 @Data 59 public class MyUser { 60 private String userName; 61 private String passWord; 62 }
运行后的结果: