Estou escrevendo um código Scala que usa a API Apache POI . Eu gostaria de iterar sobre as linhas contidas nojava.util.Iterator
que obtenho da classe Folha. Eu gostaria de usar o iterador em um for each
loop de estilo, então estou tentando convertê-lo em uma coleção nativa de Scala, mas não tive sorte.
Eu olhei para as classes / características do wrapper Scala, mas não consigo ver como usá-los corretamente. Como faço para iterar em uma coleção Java no Scala sem usar o verbosewhile(hasNext()) getNext()
estilo de loop?
Aqui está o código que escrevi com base na resposta correta:
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)
}
}
}