java.lang.Iterable

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

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

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

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

实现这个接口不少,好比ArrayListLinkedHashSet, LinkedList等等element

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

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

  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;for循环

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

.......class

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

一、iterator能够动态的移除元素,不用维护元素小标,可是for循环不行。

二、采用ArrayList对随机访问比较快,而for循环中的get()方法,采用的便是随机访问的方法,所以在ArrayList里,for循环较快。

三、采用LinkedList则是顺序访问比较快,iterator中的next()方法,采用的便是顺序访问的方法,所以在LinkedList里,使用iterator较快。

相关文章
相关标签/搜索