Iterator接口有抽象方法hasNext()和next()?

时间:2016-07-05 10:18:32

标签: java

Iterator有一个方法---> hasNext()返回boolean值,它有next()返回元素。 任何人都可以告诉我Iterator是否是一个接口然后它的抽象方法如何返回值? 什么是内部实施?

4 个答案:

答案 0 :(得分:2)

嗯,实现取决于您获取Iterator对象的方式。例如,如果你有

List<String> list = new ArrayList<>(); 
Iterator<String> iterator = list.iterator();

您将获得类Itr的对象,这是ArrayList的私有类。或者

List<String> list = new ArrayList<>(); 
ListIterator<String> iterator = list.listIterator();

你会得到ListItr的对象。类似的事情发生在Set。您真正需要的只是查看JDK的来源。

答案 1 :(得分:0)

Iterator是一个接口,所有java集合对象在类中都有自己的实现(即实现Iterator接口的新IteratorType)。

答案 2 :(得分:0)

接口可以由许多不同的类实现。这取决于您调用.iterator()方法的哪个集合,您将获得哪种实现。

如果你从ArrayList创建一个迭代器,我看到(在Java 8中)实现是:

private class Itr implements Iterator<E> {
...

此类是ArrayList类的内部类。其他Iterable类将提供Iterator接口的其他实现。

答案 3 :(得分:0)

Iterator是Java中的一个接口。它作为java.util

存在于java.util.Iterator包中

Iterator由作为Collection接口的子类的类实现时,Iterable接口扩展iterator()接口,我们可以获得ArrayList a = new ArrayList(); a.add("AA"); a.add("BB"); // Use iterator to display contents of a Iterator iterator = a.iterator(); while(iterator.hasNext()) { Object element = iterator.next(); ... } 对象

所以代码如下:

next()

所以我们在这里看到我们没有直接使用接口中的hasNext()iterator()方法,而是通过从类中获取Iterator对象来使用它们。实施For i = 1 To Iteration: Cells(4, 3) = i Do While j < 366 If IIf(Rnd() < P1, 1, 0) = 1 Then RestorationDay1 = Discrete1 ElseIf IIf(Rnd() < P2, 1, 0) = 1 Then RestorationDay1 = Discrete2 ElseIf IIf(Rnd() < P3, 1, 0) = 1 Then RestorationDay1 = Discrete3 Else RestorationDay1 = 0 End If Sumunavailableday1 = Sumunavailableday1 + RestorationDay1 unAvailability1 = Sumunavailableday1 / 365 Availability1 = 1 - unAvailability1 Cells(4, 8) = j Cells(4, 9) = Availability1 Cells(4, 10) = unAvailability1 Cells(4, 11) = Sumunavailableday1 j = j + RestorationDay1 + 1 Loop Do While 365 < j < 731 If IIf(Rnd() < P1, 1, 0) = 1 Then RestorationDay2 = Discrete1 ElseIf IIf(Rnd() < P2, 1, 0) = 1 Then RestorationDay2 = Discrete2 ElseIf IIf(Rnd() < P3, 1, 0) = 1 Then RestorationDay2 = Discrete3 Else RestorationDay2 = 0 End If Sumunavailableday2 = Sumunavailableday2 + RestorationDay2 unAvailability2 = Sumunavailableday2 / 365 Availability2 = 1 - unAvailability2 Cells(5, 8) = j Cells(5, 9) = Availability2 Cells(5, 10) = unAvailability2 Cells(5, 11) = Sumunavailableday2 j = j + RestorationDay2 + 1 Loop Next i 接口