首页 > 编程语言 > 详细

Java中Iterator与Iterable的区别

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

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的区别

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

(1)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!