Ich schreibe einen Scala-Code, der die Apache POI- API verwendet. Ich möchte über die Zeilen iterieren, die in java.util.Iterator
der Sheet-Klasse enthalten sind. Ich möchte den Iterator in einer for each
Stilschleife verwenden, daher habe ich versucht, ihn in eine native Scala-Sammlung zu konvertieren, werde aber kein Glück haben.
Ich habe mir die Scala-Wrapper-Klassen / -Eigenschaften angesehen, kann aber nicht sehen, wie man sie richtig verwendet. Wie iteriere ich über eine Java-Sammlung in Scala, ohne den ausführlichen while(hasNext()) getNext()
Stil der Schleife zu verwenden?
Hier ist der Code, den ich basierend auf der richtigen Antwort geschrieben habe:
class IteratorWrapper[A](iter:java.util.Iterator[A])
{
def foreach(f: A => Unit): Unit = {
while(iter.hasNext){
f(iter.next)
}
}
}
object SpreadsheetParser extends Application
{
implicit def iteratorToWrapper[T](iter:java.util.Iterator[T]):IteratorWrapper[T] = new IteratorWrapper[T](iter)
override def main(args:Array[String]):Unit =
{
val ios = new FileInputStream("assets/data.xls")
val workbook = new HSSFWorkbook(ios)
var sheet = workbook.getSheetAt(0)
var rows = sheet.rowIterator()
for (val row <- rows){
println(row)
}
}
}