List列表中根據某一個字段,進行去重


比如得到的List中有10個User對象,現在要求UserName相同的對象只保留一個,下面給大家介紹兩種較簡便的方法,

      方法一:首先建一個空的list1和一個HashMap,然后對List進行for循環,在for循環中得到List中的User對象,將User對象的UserName放到Map中(map中的key和value可以都是user的userName),如下:

List<User> list1= new ArrayList<User>();
        HashMap<String, String> hashMap = new HashMap<String, String>();
       for (User user : ListUSer) {
            if (user == null) {
                continue;
            }
            String  userName = user.getUserName();
            if (userName != null) {
               // String listIdStr = listId.longValue() + "";
                String value = hashMap.get(userName);
                if (StringUtils.isBlank(value)) { //如果value是空的  說明取到的這個userName是第一次取到
                    hashMap.put(userName, userName);
                list1.add(user); //list1就是我們想要的去重之后的結果
                } else {
                    continue;
                }
            }   
}

 hashMap.clear();//結束了記得將hashMap請一個,內存能夠得到及時的釋放

方法二:同樣建一個空的list2,和一個空的set(和方法一的區別就是方法一用的是map,方法二用的是set)

 List<User> list1= new ArrayList<User>();
    Set<String> set=new HashSet<String>();
       for (User user : ListUSer) {
            if (user == null) {
                continue;
            }
            String  userName = user.getUserName();
            if (userName != null) {
                if (!set.contains(userName)) { //set中不包含重復的
  set.add(userName);
list1.add(user);
                } else {
                    continue;
                }
            }   
}


 set.clear();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM