在开发过程中对于集合的遍历一般采用for循环,
但在循环中移除数据的时候for循环无法满足该需求,
这时需要通过Iterator来实现循环中移除数据。
例如现在有这样一个需求,一个集合(ArrayList)中有0-9 10个数据,需要移除其中的偶数。打印剩下的奇数。
通过for循环来操作将会写出如下代码:
方法1:
利用for循环获得偶数
package com.hyhl.util; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ForList { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(10); for (int i = 0; i < 10; i++) { list.add(i); } List<Integer> shuList = new ArrayList<Integer>();
//新建一个偶数列表 shuList ,将list表中的所有偶数放入shuList表中 for(Integer shu:list){ if(shu%2==0){ shuList.add(shu); } }
//第二步,将list表中的shuList的数据移除,就得到需要的list for(Integer s:shuList){ list.remove(s); } for (int number : list) { System.out.println(number); } } }
方法2:
直接使用:Iterator来实现循环中移除数据,如下所示:
package com.hyhl.util; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ForIterator { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(10); for (int i = 0; i < 10; i++) { list.add(i); } for (Iterator<Integer> iterator = list.iterator(); iterator.hasNext();) { Integer val = iterator.next(); if (val % 2 == 0) { //是偶数的时候已移除某一项 iterator.remove(); } } for (int number : list) { System.out.println(number); } }
结论:Iterator比for循环有更强的适应性,特别是在循环中需要对数据进行删除等操作时使用比较方便