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