在Scala中迭代Java集合

我正在编写一些使用ApachePOIAPI的Scala代码。我想迭代从Sheet类获得的java.util.Iterator中包含的行。我希望在中为每个样式循环使用迭代器,因此我一直在尝试将其转换为本机Scala集合,但不会成功

我看过Scala包装器类/特性,但看不出如何正确使用它们。如何在Scala中迭代Java集合而不使用详细的while(hasNext())getNext()循环样式

以下是我根据正确答案编写的代码:

类迭代器包装器[A](iter:java.util.Iterator[A])
{
def foreach(f:A=>单位):单位={
while(iter.hasNext){
f(国际热核实验堆,下一个)
}
}
}
对象分析器扩展应用程序
{
隐式def iteratorToWrapper[T](iter:java.util.Iterator[T]):IteratorWrapper[T]=新的IteratorWrapper[T](iter)
覆盖def main(参数:数组[字符串]):单位=
{
val ios=新文件输入流(“资产/数据.xls”)
val工作簿=新的HSSF工作簿(ios)
var sheet=workbook.getSheetAt(0)
var rows=sheet.rowditerator()
用于(val行<-行){
println(世界其他地区)
}
}
}

从Scala2.8开始,您所要做的就是导入JavaConversions对象,它已经声明了适当的转换

导入scala.collection.JavaConversions_

但这在以前的版本中不起作用

发表评论