zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    令人恼怒!mount windows共享目录出错
    今天修改PCB板图
    在深圳出差
    触摸屏技术原理介绍
    getrlimit和setrlimit函数
    OpenCV下的HelloWorld
    两本OpenCV的书到了
    GDB用法小结
    没搞懂自适应二进制阈值化的参数
    【JavaScript】73 逆序的三位数 (10分)
  • 原文地址:https://www.cnblogs.com/zuge/p/6347529.html
Copyright © 2011-2022 走看看