J'écris du code Scala qui utilise l' API Apache POI . Je voudrais parcourir les lignes contenues dans le java.util.Iterator
que je reçois de la classe Sheet. Je voudrais utiliser l'itérateur dans une for each
boucle de style, j'ai donc essayé de le convertir en une collection Scala native mais je n'aurai pas de chance.
J'ai regardé les classes / traits du wrapper Scala, mais je ne vois pas comment les utiliser correctement. Comment parcourir une collection Java dans Scala sans utiliser le while(hasNext()) getNext()
style verbeux de loop?
Voici le code que j'ai écrit en fonction de la bonne réponse:
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)
}
}
}