【问题标题】:Iterator in JavaJava中的迭代器
【发布时间】:2011-02-22 19:00:20
【问题描述】:

什么是迭代器和集合? 这两者有什么关系吗?

// the interface definition
Interface Iterator {
    boolean hasNext();
    Object next(); // note "one-way" traffic
    void remove();
}

// an example
public static void main (String[] args){
    ArrayList cars = new ArrayList();

    for (int i = 0; i < 12; i++)
        cars.add (new Car());

    Iterator it = cats.iterator();

    while (it.hasNext())
        System.out.println ((Car)it.next());
}

接口迭代器是否单独预定义了这些方法名称或用户定义了这些方法名称? 下面这四行究竟说明了什么?

cars.add (new Car());
Iterator it = cats.iterator();
while (it.hasNext())
    System.out.println ((Car)it.next());

谢谢。我正在浏览收藏中的一本书。

【问题讨论】:

    标签: java collections iterator


    【解决方案1】:

    迭代器最常用作遍历集合元素的机制。

    这个概念根本不是 Java 特有的,尽管你展示的具体接口定义是。

    请参阅Wikipedia article on Iterator,了解它的含义以及它在包括 Java 在内的各种语言中是如何完成的。

    在 Java 中,它是一个接口,因此您确实可以实现自己的接口,但是为 Java 集合库中的集合和任何 Java 集合实现方法定义了合理的接口

    collection.iterator()
    

    应该返回一个遍历该集合元素的迭代器。

    有关更多信息,请参阅 CollectionIterator 的 javadoc。

    【讨论】:

      【解决方案2】:

      从技术上讲,迭代器和集合没有直接关系。然而,迭代器大多与集合一起使用,以对集合中包含的对象进行交互。

      迭代器是一个通用且灵活的概念,它允许在不依赖于它们所迭代的实体的确切实现的情况下对对象进行交互。

      【讨论】:

        【解决方案3】:

        Java 集合,顾名思义,就是事物的集合。如果你不认识这个词,就查字典吧。

        有很多类型的集合。以集合的数学概念为例。你可以将任意的东西放在一个集合中,但它永远不会包含相同的东西超过一次。集合中的东西没有顺序,也就是说你不能说A在B之前。另一种类型的集合是列表。一个列表可以多次包含同一事物,列表中事物的顺序很重要。

        所有这些集合的共同点是它们包含事物,在 Java 中称为 元素。当您想知道某个集合中有哪些东西时,您迭代该集合,这只是遍历所有元素的另一个术语。这就是Iterator 所做的。它基本上从集合的开头开始,您可以随时询问是否有下一个元素(hasNext()),如果有,您可以访问该元素(next()),直到您遍历所有集合中的元素。

        【讨论】:

        • 我建议不要查看字典,而是查看 Gamma 等人的 Design Patterns
        猜你喜欢
        • 2012-03-23
        • 2014-03-25
        • 2017-06-12
        • 2010-10-28
        • 1970-01-01
        • 2016-02-17
        • 2016-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多