java.lang.Iterable

从jdk1.5 java.lang包增加了这个接口。

实现这个接口允许对象成为 "foreach" 语句的目标,即增强的for循环。

然而此接口中只有一个接口类方法。

  /**
     * Returns an iterator over a set of elements of type T.
     *
     * @return an Iterator.
     */
    Iterator<T> iterator();

实现这个接口很多,比如ArrayList、LinkedHashSet, LinkedList等等

ArrayList中有一个内部类实现了Iterator:

  public Iterator<E> iterator() {
        return new Itr();
    }

  private class Itr implements Iterator<E> {
        int cursor;       // index of next element to return
        int lastRet = -1; // index of last element returned; -1 if no such
        int expectedModCount = modCount;

        public boolean hasNext() {
            return cursor != size;
        }

.......

所以使用for循环与使用迭代器iterator是有很明显的区别的:

1、iterator可以动态的移除元素,不用维护元素小标,但是for循环不行。

2、采用ArrayList对随机访问比较快,而for循环中的get()方法,采用的即是随机访问的方法,因此在ArrayList里,for循环较快。

3、采用LinkedList则是顺序访问比较快,iterator中的next()方法,采用的即是顺序访问的方法,因此在LinkedList里,使用iterator较快。

 

 

 

 

转载于:https://my.oschina.net/qiurf/blog/810369

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值