在 Scala 中迭代 Java 集合
2022-08-31 09:12:40
我正在编写一些使用Apache POI API的Scala代码。我想循环访问从 Sheet 类获取的 中包含的行。我想在样式循环中使用迭代器,所以我一直在尝试将其转换为本机Scala集合,但不会有任何运气。java.util.Iterator
for each
我已经看过Scala包装类/特征,但我看不到如何正确使用它们。如何在不使用详细循环样式的情况下迭代 Scala 中的 Java 集合?while(hasNext()) getNext()
以下是我根据正确答案编写的代码:
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)
}
}
}