最近经常遇到要对List集合做过滤处理,想到刚开始的时候,在网上没搜到相关的方法,当时自己就写了一个(很复杂的),3个月之后的现在想来,代码真的很垃圾。现在就把最近在网上查到的做一下简单记录:既方便自己,也给像我一样的菜鸟提供参考。

    一般来说,有两种方法:for循环Iterator迭代

    1、for循环:    

public class removeList1{
        public static void main(String[] args){
            List<String> list = new ArrayList<String>();
            list.add("b1");
            list.add("b3");
            list.add("b2");
            list.add("b3");
            list.add("b4");
            list.add("b4");
            list.add("b3");
            list.add("b5");
            list.add("b3");
            System.out.println("删除前的集合为:" + list);
            System.out.println("删除前集合的长度为:" + list.size());
            for (int i = 0, len = list.size(); i < len; i++) {
                if("b3".equalsIgnoreCase(list.get(i))){
                    list.remove(i);
                    len--;// 少了会报错。
                    i--;// 少了就不能删除所有的元素了。
                }

            }
            System.out.println("删除后的集合为:" + list);
            System.out.println("删除后集合的长度为:" + list.size());
        }

}

 运行后,就会把“b3”过滤掉。对于list中元素复杂点的,像套个Map对象,只需要比较Map对像某个属性就可以了。

     2、Iterator循环: 

public class removeList1{
        public static void main(String[] args){
            List<String> list = new ArrayList<String>();
            list.add("b1");
            list.add("b3");
            list.add("b2");
            list.add("b3");
            list.add("b4");
            list.add("b4");
            list.add("b3");
            list.add("b5");
            list.add("b3");
            System.out.println("删除前的集合为:" + list);
            System.out.println("删除前集合的长度为:" + list.size());
            
            Iterator<String> it=list.iterator();
            while(it.hasNext()){
                String data=it.next();
                System.out.println(data);
                if(data.equals("b4")){
                    it.remove();
                }
            }
            System.out.println("删除后的集合为:" + list);
            System.out.println("删除后集合的长度为:" + list.size());
        }

}

    利用迭代器过滤。

    参考原文:http://www.bdqn.cn/news/201307/10443.shtml

    原文用迭代器的源码中的:

it.hasNext()&&!it.next().equals("")

这句判断语句好像有点问题,所以我分开判断的。