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();
时间: 2024-08-24 00:30:03

List列表中根据某一个字段,进行去重的相关文章

用update和replace在sql中替换某一个字段的部分内容

用update和replace在sqlSever中替换某一个字段的部分内容 update users_settings set 替换字段 = replace(替换字段,' 原来内容' '新的内容') where `ConfigName`='accesslist' SQL报错"参数数据类型 text 对于 replace 函数的参数 1 无效" 对text或ntext类型的数据在查询中不能进行字符串操作.这时用得最多的是把text当作varchar(实际内容长度低于8000字节时)或把n

【Excle数据透视】如何在数据透视表字段列表中显示更多的字段

创建完数据透视表之后,由于字段太多,在列表中没有完全显示 解决方案 通过"字段节和区域节并排"功能来显示更多字段 修改后结果 字段已经完全显示出来了! "字段节和区域节层叠"字段太多就造成了字段显示不全.

Python获取列表中的最后一个或者倒数第几个的方案

print(members[3]) 灵魂所在“ - (负号 )” 我们先来创建一个列表,和php中的数组一样. members = ['张三','李四','王五','芳芳','小明','小王'] 按照正常的方法,我们要取出第几个值,那么我们只需在知道他的索引即可,Python的索引从0开始 下面我们取出第一个用户的名称 print(members[0]) 得到的结果是张三,如果是 print(members[3]) 这是正向的取值,那么我们反序取值,只需加上 - 号即可 print(member

json数据中的某一个字段进行快速排序

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 9 </body> 10 </html> 11 <script type="text/javascrip

如何根据数组中的某一个属性进行去重

var arr=[];for(var i = 0, l = this.arr.length; i < l; i++) { for(var j = i + 1; j < l; j++){ if (this.arr[i].batch === this.arr[j].batch){ j = ++i; } } this.arr.push(this.arr[i]);} 原文地址:https://www.cnblogs.com/Regina-wisdom/p/9481969.html

Xcode中的Info.plist字段列表详解

Info.plist用于向iOS提供关于app,bundle或者framework的一些重要信息.它指定了比如一个应用应该怎样启动,它如何被本地化,应用的名称,要显示的图标,还有更多.Info.plist文件实际上是苹果预定义schema的XML文件. 为了构建一个设备相关的健,你在健的后面要加上~iphone或者~ipad. 常用字段:   1.获取版本信息: NSDictionary*infoDic = [[NSBundle mainBundle] infoDictionary]; NSSt

将列表中的字符以‘*’连接生成一个新的字符串

#输出下面的字符 """  1  2*3 4*5*6 7*8*9*10 11*12*13*14*15 16*17*18*19*20*21 """ x=1 n=int(raw_input('please input row number:')) for i in range(0,n): x=x+i y=x+i #将列表中的每一个元素转换成字符 m=map(str,range(x,y+1)) #将列表中的字符以‘*’连接生成一个新的字符串 print

iOS开发 Xcode中的Info.plist字段含义

Info.plist用于向iOS提供关于app,bundle或者framework的一些重要信息.它指定了比如一个应用应该怎样启动,它如何被本地化,应用的名称,要显示的图标,还有更多.Info.plist文件实际上是苹果预定义schema的XML文件. 为了构建一个设备相关的健,你在健的后面要加上~iphone或者~ipad. 常用字段: 1.获取版本信息: NSDictionary*infoDic = [[NSBundle mainBundle] infoDictionary]; NSStri

models.Model中常用的数据字段格式说明

在models.Model中常用的数据字段格式说明 字段格式 可以使用的参数 说明 BigIntegerField 64位的大整数 BooleanField 布尔值,只有True和False两种 CharField max_length,min_length; 指定的接受字符串长度 DateField auto_now :每次存储时就自动加入当前日期auto_now_add: 只有在对象被创建时才加入当前日期(创建日期) 日期格式,可用于datetime.date DateTimeField 同