最近经常遇到要对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("")
这句判断语句好像有点问题,所以我分开判断的。