Es gibt Probleme beim Konvertieren einer Liste in einen Iterator mit integrierten Methoden.Scala: List.iterator erzeugt leeren Iterator
- Der Aufruf
iterator.hasNext
ändert den Wert voniterator.size
. iterator.hasNext == false
selbst bei einem nicht leeren Iterator vor ist eine Iteration aufgetreten.
Irgendwelche Ideen, was diese Probleme verursachen könnte?
val list = scala.collection.immutable.List(1, 2, 3)
val iterator = list.iterator
println(iterator.size) // 3
println(iterator.hasNext) // false
println(iterator.size) // 0
Bestätigt lokal auf Scala Version 2.11.4 (OpenJDK 64-Bit Server VM, Java 1.8.0_72).
Bestätigt auf IdeOne here.
Von der Iterator Docs API: "Es ist besonders wichtig zu beachten, dass, wenn nicht anders angegeben, niemals ein Iterator nach dem Aufruf einer Methode verwendet werden sollte.". Dies beinhaltet die 'size' Methode. – Brian