Sto scrivendo del codice Scala che utilizza l' API POI di Apache . Vorrei iterare sulle righe contenute nel java.util.Iterator
che ottengo dalla classe Sheet. Vorrei utilizzare l'iteratore in un for each
ciclo di stile, quindi ho provato a convertirlo in una raccolta Scala nativa, ma non avrò fortuna.
Ho esaminato le classi / tratti del wrapper Scala, ma non riesco a vedere come usarli correttamente. Come faccio a iterare su una raccolta Java in Scala senza utilizzare lo while(hasNext()) getNext()
stile dettagliato di loop?
Ecco il codice che ho scritto in base alla risposta corretta:
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)
}
}
}