huarrrr
2018-12-19 11:26:36
关于两个实体list元素去重问题解决
本人去重用过3种方法:
1、直接for循环remove();
2、将list转换成无序的set,去重后再转换成list;
3、iterator迭代器;
这个迭代器可能大神们都知道,作为一个新手我还是第一次用,随便记录一下,不喜勿喷。
最近在做一个仿支付宝九宫格管理的需求,因为就框架没有封装新版rv导致包冲突,只能做一个GridView。后台返回两组数据,一组是首页展示的,另一组是隐藏待展示的。管理时需要重新组装list。一开始用for循环发现去除后会多出一个,原因是id会重复导致判断错误没有去除。。后来发现util包中有一个Itorator的接口类,它非常简单:
public interface Iterator<E> { boolean hasNext(); E next(); void remove(); }
它只能单向移动:第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。其中:next()获得序列中的下一个元素;hasNext()检查序列中是否还有元素;remove()将迭代器新返回的元素删除。于是:
for (MenuEntity menuEntity : indexSelect) { Iterator<MenuEntity> iterator = indexLC.iterator(); while (iterator.hasNext()) { MenuEntity next = iterator.next(); if (next.getTitle().equals(menuEntity.getTitle())) { iterator.remove(); } } }
这样就完成了两个实体list去重了,截图:
ok。今天分享这么一个轻量级对象。
评论

wxh1234567 LV4
2021年9月28日
天大可想
2021年4月15日
暂无贡献等级
bang613623 LV1
2020年10月13日
378190026
2020年4月8日
暂无贡献等级
一天一点爱恋 LV5
2020年3月13日
LikL9420 LV12
2020年1月16日
栗劲松 LV2
2019年11月26日
you960801
2019年11月15日
暂无贡献等级
hhuangh LV5
2019年11月14日
wangshaoqiu LV4
2019年10月30日