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();
  • 相关阅读:
    异常介绍
    docker 命令
    acm
    Openfiler能把标准x86/64架构的系统变成一个强大的NAS、SAN存储和IP存储网关
    docker 图解学习
    基于Docker的TensorFlow机器学习框架搭建和实例源码解读
    菜鸟打印控件
    Oracle 12c on Solaris 10 安装文档
    内存对齐小解
    安装oracle 11gr2 rac on solaris
  • 原文地址:https://www.cnblogs.com/zuge/p/6347529.html
Copyright © 2011-2022 走看看