Interator 遍历

本文详细介绍了Java中Iterator接口的使用方法及其实现原理。通过具体示例展示了如何利用Iterator遍历集合,并解释了Iterator的主要方法hasNext(), next() 和 remove() 的功能。此外,还深入探讨了Iterator的内部实现机制。

Iterator用于遍历集合中的元素,适用于不知道集合内部结构的情况。用户不再与集合类交互,而是与Iterator交互,其清楚知道集合类的内部状态,通过控制iterator达到遍历集合的目的。

public static void iteratorDemo(){
    List<String> list=new ArrayList<String>();
    list.add("xiaoming");
    list.add("zhongji");
    Iterator it=list.iterator();
    while(it.hasNext()){
    String str=it.next();
    system.out.println(str);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1 java API中Iterator接口

public Interface Iterator<E>{
    boolean hasNext();  
   Object next();  
   void remove(); 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其中: 
hasnext()是判断语句,表示集合中元素是否遍历完 
next()相当于指针,返回Object对象,需要强转为需要的类型 
remove()删除集合中元素,不常用。

注意:next()是从前往后遍历,若想向前遍历,可以使用继承Iterator接口的ListIterator接口,其含有E previous()方法,可以向前遍历集合元素。但要注意只有List可以使用ListIterator接口(链表迭代器),只有其含有ListIterator()方便,返回ListIterator<E>对象。


2 迭代器的实现原理 
通过上述的分析可知迭代器是取出集合元素的方式。我们知道一个规则想去访问另一个规则中的方法,可以用内部类。如下图: 
这里写图片描述

Collection是集合顶层接口,含有两个子接口List和Set,然后又有分别实现接口的类。通过查看jdk源码,每个集合类内部都含有Iterator<E> iterator()方法,该方法是返回集合中迭代器对象。获取迭代器对象后,就可以使用hasNext、next方法操作集合中的元素了(遍历)。如果仔细分析下,不难得出如下结论:

每个集合类内部都含有一个内部类,用来实现Iterator接口。集合类的iterator方法就是在获取内部类对象(迭代器对象),然后通过该对象调用hashNext和next方法实现遍历。


3 下面以ArrayList源码分析jdk中如何实现Iterator

class ArrayList{
    public Iterator<E> iterator(){return new Itr();}
    class Itr implements Iterator{
        public hasNext(){……}//重写这两个方法,实现元素遍历
        public next(){……}
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

通过内部类,我们才可以使用诸如list.iterator().hasNext()这样的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值