Java中的迭代器

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

// 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()); } 

Interface Iterator是否预先定义了这些方法名称或用户定义了哪些方法名称? 下面这四行实际上讲的是什么?

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

谢谢。 我正在阅读一本collections的书。

正如名称所示,Java集合是事物的集合。 如果您不知道该单词,请在字典中查找。

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

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

技术上,迭代器和集合没有直接关系。 但是,迭代器主要与集合一起使用,以便对集合中包含的对象进行交互。

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

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

尽管您展示的具体接口定义是,但该概念并非特定于Java。

请参阅有关Iterator的Wikipedia文章 ,了解它的含义以及如何使用各种语言(包括Java)完成它。

在Java中,它是一个接口,所以你确实可以实现自己的,但是为Java集合库中的集合定义了合理的接口,并为任何Java Collection实现了方法。

 collection.iterator() 

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

另请参阅Collection和Iterator的javadoc以获取更多信息。