美文网首页计算机杂谈大数据程序员
【Java小收获】List一次删除多个元素

【Java小收获】List一次删除多个元素

作者: 张照博 | 来源:发表于2018-05-13 21:21 被阅读223次

    正文之前

    今天还在执着的肝论文,EADC这个理论上的简单算法, 我活活肝了三天,虽然大部分时间在划水,但是也可见我真是个渣渣,今天遇到一个小问题。那就是如何在List中一次删除多个元素?因为我们删除掉一个元素之后,后面的元素的索引都会变化。所以还有另外的搞法,当然,我也有自己的看法

    正文

    ArrayList类是List接口的实现类,同时List接口是Collection接口的子接口。其删除方法分为带索引号 index 和不带索引两种

    • 1、remove( Object );removeAll( Collection ) //删除指定元素或集合,返回布尔值
    • 2、remove( index );//删除指定索引位置的元素,返回删除的元素</pre>

    那么显而易见的,当我们在遍历的时候,是不能这么搞得对吧?就算可以!也别这么干,很危险啊,C++里面绝对不容许这么干的。那么Java里边也别这么干吧,所以还是先把要删除的索引用一个ArrayList存起来,(把满足要求的数据放到另一个集合里,)最后统一删除,就不会漏删了!!!!

    看我的:

        public static void Clear(ArrayList<Area> allArea){
            ArrayList<Area> del = new ArrayList<>();
            for (int s = 0;s<allArea.size();++s) {
                if (allArea.get(s).getCount() == 0){
                    if (s>0) {
                        allArea.get(s - 1).merge(allArea.get(s));
                        del.add(allArea.get(s));
                    }
                    continue;
                }
            }
            allArea.removeAll(del);
        }
    

    这个方法就是专门用来删除在ArrayList<Area> allArea中size为0的空的Area的。可以看到,我用一个del存着所有要删除的项目,然后一把删除。。怎么样?不错吧?


    不过其实吧,我觉得也可以用索引来删除,不过要从后面开始删起,而且不能是对要删除的ArrayList进行遍历,而是对我们的删除索引集合进行遍历:

        public static void Clear(ArrayList<Area> allArea){
            ArrayList<Integer> del = new ArrayList<>();
            for (int s = 0;s<allArea.size();++s) {
                if (allArea.get(s).getCount() == 0){
                    if (s>0) {
                        allArea.get(s - 1).merge(allArea.get(s));
                        del.add(s);
                    }
                    continue;
                }
            }
            for(int i=del.size()-1;i>=0;--i){
                allArea.remove(del.get(i));
            }
            allArea.removeAll(del);
        }
    

    下面这法子从均值上来说还慢一点。。。好吧,果然还是官方爸爸厉害啊!!

    溜了!这就是删除的法子,还蛮好用的!

    正文之后

    感觉EADC算法应该快写完了!到时候再发一篇总结一下这个工作的文章。不过肯定要查重后了。我还打算靠着这点原创代码凑字数呢。。。

    相关文章

      网友评论

        本文标题:【Java小收获】List一次删除多个元素

        本文链接:https://www.haomeiwen.com/subject/rvcrdftx.html