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();
  • 相关阅读:
    Mac 快速进入mysql命令行
    Vuex 的使用 State Mutation Getter Action
    Vuex状态管理
    路由模块化
    Vue中路由的嵌套
    Vue路由编程式导航以及hash模式
    Vue动态路由 Get传值
    Vue中的路由 以及默认路由跳转
    Vue非父子组件传值
    父组件主动获取子组件的数据和方法 和 子组件主动获取父组件的数据和方法
  • 原文地址:https://www.cnblogs.com/zuge/p/6347529.html
Copyright © 2011-2022 走看看