Apache POI API 를 사용하는 일부 Scala 코드를 작성 중 입니다. java.util.Iterator
Sheet 클래스에서 가져온에 포함 된 행을 반복하고 싶습니다 . for each
스타일 루프 에서 반복기를 사용하고 싶기 때문에 네이티브 Scala 컬렉션으로 변환하려고 시도했지만 운이 좋지 않습니다.
Scala 래퍼 클래스 / 특성을 살펴 보았지만 올바르게 사용하는 방법을 볼 수 없습니다. 자세한 while(hasNext()) getNext()
루프 스타일을 사용하지 않고 Scala에서 Java 컬렉션을 어떻게 반복 합니까?
정답을 바탕으로 작성한 코드는 다음과 같습니다.
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)
}
}
}