如何在 Java 中迭代 Scala 集合?
问问题
7690 次
3 回答
18
一些例子斯卡拉
class AThing {
@scala.reflect.BeanProperty val aList = List(1,2,3,4,99)
}
Java 客户端
public class UseAThing {
public static void main(String a[]) {
AThing thing = new AThing();
scala.collection.Iterator iter = thing.getAList().iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
}
输出
jem@Respect:~/c/user/jem$ java -cp /opt/scala/lib/scala-library.jar:. UseAThing
1
2
3
4
99
这有帮助吗?
于 2010-09-06T03:27:09.477 回答
3
从集合中获取 ScalaIterator
并使用转换 fromscala.collection.JavaConversions
将其转换为 Java Iterator
。
这是一个例子:
scala> val li1 = List(2, 3, 5, 7, 11)
li1: List[Int] = List(2, 3, 5, 7, 11)
scala> val ii1 = li1.iterator
ii1: Iterator[Int] = non-empty iterator
scala> import collection.JavaConversions._
import collection.JavaConversions._
scala> val ji1: java.util.Iterator[Int] = ii1
ji1: java.util.Iterator[Int] = IteratorWrapper(non-empty iterator)
scala> val ji2 = ii1: java.util.Iterator[Int]
ji2: java.util.Iterator[Int] = IteratorWrapper(non-empty iterator)
随着JavaConversions
导入到任何给定范围,有一个隐式转换会将任何 ScalaIterator[T]
转换为相应的 Java Iterator<T>
。在前面的示例中,ji1
声明的显式类型触发了对初始化程序的隐式转换的应用ii1
。在这种ji2
情况下,类型归属ii1
会触发转换。
于 2010-09-06T00:21:49.550 回答
2
for(Item item: JavaConverters.seqAsJavaListConverter(seq).asJava()) {
// Do thing with item
}
于 2018-09-20T17:44:26.790 回答