最近经常遇到要对List集合做过滤处理,想到刚开始的时候,在网上没搜到相关的方法,当时自己就写了一个(很复杂的),3个月之后的现在想来,代码真的很垃圾。现在就把最近在网上查到的做一下简单记录:既方便自己,也给像我一样的菜鸟提供参考。
一般来说,有两种方法:for循环、Iterator迭代。
1、for循环:public class removeList1{
public static void main(String[] args){
List list = new ArrayList();
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
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 list = new ArrayList();
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 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());
}
}
利用迭代器过滤。
原文用迭代器的源码中的:it.hasNext()&&!it.next().equals("")
这句判断语句好像有点问题,所以我分开判断的。