LIST 对象去重的问题

cpp_1 2021-03-02 12:22:22

没有积分了,所以只能设置这一些了

我有一个对像aa 里面有三个属性 name1,name2,name3,age,sex

LIST<aa> temp=new array();

这个temp里面有1千条数据
我现在想做的就是,如果有二条记录:name1,name2,name3是一样,就认为是重复数据,我要取出来

现在不能用java 8的steam,有什么高效逻辑处理方式吗?

这种1000*1000的循环是不是有一点低了


...全文
137 点赞 收藏 9
写回复
9 条回复
走在四季 03月03日
引用 1 楼 hbhbhbhbhb1021 的回复:
把name那几个字段拼接当成HashMap的key,判断是不是存在key,应该循环一遍可以出来
支持这位小哥哥,key 存的单独用一个集合存起来就是结果了。
回复 点赞
hbhbhbhbhb1021 03月02日
把name那几个字段拼接当成HashMap的key,判断是不是存在key,应该循环一遍可以出来
回复 点赞
sotondolphin 03月02日
你的需求是过滤掉重复的元素,还是取出重复的元素? 如果是过滤掉,直接用Set, 不要用list, 如果是取出就要用下面的逻辑 把arraylist 里面的元素按照name1,name2,name3的顺序排序,然后遍历,如果第二个元素的nam1,name2,name3 等于上一个元素的值,就把他加到新的set 里面,最后返回这个新的set.
回复 点赞
一只三黄鸡 03月02日
4楼正解,试试就知道了
回复 点赞
叫练 03月02日
引用 1 楼 hbhbhbhbhb1021 的回复:
把name那几个字段拼接当成HashMap的key,判断是不是存在key,应该循环一遍可以出来
是的,一遍就可以
回复 点赞
孤寂的游魂 03月02日
把list转set,然后再转回list即可,set会自动去重
回复 点赞
myazq 03月02日
重写 aa hashCode equals ,list转Set,再转回list
回复 点赞
cpp_1 03月02日
原来我也是用的steam,又快又省代码 最后服务器上面jdk没有1.8,不能用这个 现在只能换写法。 哎。
回复 点赞
KeepSayingNo 03月02日
这个果断用stream啊,直接 temp.stream.filter(aa::name1.equals(aa::name2)&&aa::name3.equals(aa::name2))..collect(Collectors.toList());
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告