柠檬学院
huarrrr的gravatar头像
huarrrr2018-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去重了,截图:

关于两个实体list元素去重问题解决

ok。今天分享这么一个轻量级对象。


打赏

分享到:

最近浏览
381802454 LV11月15日
星星
taoziyy LV21月15日
星星星星
小白来游记 LV21月14日
星星星星
1211413075 LV101月12日
月亮月亮星星星星
lzy6312 LV101月11日
月亮月亮星星星星
benson_liangbing LV61月11日
月亮星星星星
13589413314 LV51月11日
月亮星星
demotest12345 LV41月11日
月亮
哈哈你好 LV31月10日
星星星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友