码迷,mamicode.com
首页 > 编程语言 > 详细

Java中Iterator与Iterable的区别

时间:2015-06-29 10:17:41      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:java   iterable   iterator   

Iterable的定义:

java.lang包

/**
 * Implementing this interface allows an object to be the target of
 * the "foreach" statement.
 *
 * @param <T> the type of elements returned by the iterator
 *
 * @since 1.5
 */
public interface Iterable<T> {

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

Iterator的定义:

java.util包:

public interface Iterator<E> {
    boolean hasNext();

    E next();

    void remove();
}

Iterator是迭代器类,而Iterable是为了只要实现该接口就可以使用foreach,进行迭代。

Iterable中封装了Iterator接口,只要实现了Iterable接口的类,就可以使用Iterator迭代器了。

集合Collection、List、Set都是Iterable的实现类,所以他们及其他们的子类都可以使用foreach进行迭代。

那为什么这些集合类不直接实现Iterator呢?

Iterator中和核心的方法next(),hasnext(),remove(),都是依赖当前位置,如果这些集合直接实现Iterator,则必须包括当前迭代位置的指针。当集合在方法间进行传递的时候,由于当前位置不可知,所以next()之后的值,也不可知。而当实现Iterable则不然,每次调用都返回一个从头开始的迭代器,各个迭代器之间互不影响。

Java中Iterator与Iterable的区别

标签:java   iterable   iterator   

原文地址:http://blog.csdn.net/colin_yjz/article/details/46673275

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!