当前位置: 代码迷 >> 综合 >> java中的Iterator迭代器
  详细解决方案

java中的Iterator迭代器

热度:12   发布时间:2023-10-31 16:06:40.0

主要分为两种:

一种是Collection接口的iterator(),一种是List接口自带的listIterator(),那么这两者有什么区别呢?

Iterator接口就是,Iterator用于所有集合类,在遍历集合的时候不允许对集合进行增删改操作,否则就会报同步并发修改错误java.util.ConcurrentModificationException,在遍历的过程中,用Iterator进行增删改,是迭代不到元素的

ListIterator接口就是,listIterator()作用于List集合类,在遍历集合的时候允许对集合进行增删改操作,也可以用ListIterator接口里面的方法进行增删改,推荐使用list里面自带的listIterator,在遍历的过程中,用listIterator进行增删改,是可以迭代到元素的 ,但是必须保证当前集合下的迭代器元素不变

下面是两者的演示代码:

public class listIteratorDemo {public static void main(String[] args) {// TODO Auto-generated method stubArrayList<Integer> list =new ArrayList<Integer>();list.add(1);list.add(2);list.add(3);//for(int i=0;i<list.size();i++) {//System.out.println(list.get(i)+" ");//}//只有List集合支持角标访问//获取一个遍历器//Iterator<Integer> t =list.iterator();//这个Iterator方法源于Collection接口/*使用便利器进行遍历while(t.hasNext()) {int c =t.next();if(c==3) {list.add(3);}			System.out.println(c+" ");}*/System.out.println("==================");//List接口也有listIterator()方法,基本用法和iterator差不多ListIterator<Integer> lt =list.listIterator();while(lt.hasNext()) {int c =lt.next();if(c==3) {//list.remove(2);lt.remove();}System.out.print(c+" ");}System.out.println(list);}}