• 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();
  • 相关阅读:
    在sublime中安装使用TortoiseSVN-sublime使用心得(4)
    怎么在sublime/emmet中加自定义的内容-sublime使用心得(3)
    Function学习
    null类型
    undefined类型
    《SQL语句的基本语法》《转》
    《SQL SERVER的数据类型》《转》
    SQL语句《转》
    Delphi防止多实例运行的两种方法《转》
    1.简单计算器
  • 原文地址:https://www.cnblogs.com/zuge/p/6347529.html
Copyright © 2020-2023  润新知