在Java中迭代Scala集合

在Java中迭代Scala集合,java,scala,iterator,scala-collections,Java,Scala,Iterator,Scala Collections,如何在Java中迭代Scala集合?从集合中获取Scala迭代器,并使用来自Scala.collection.JavaConversions的转换将其转换为Java迭代器 下面是一个例子: 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 s

如何在Java中迭代Scala集合?

从集合中获取Scala
迭代器
,并使用来自
Scala.collection.JavaConversions的转换将其转换为Java
迭代器

下面是一个例子:

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
导入任何给定的作用域后,会有一个隐式转换,将任何Scala
Iterator[T]
转换为相应的Java
Iterator
。在前面的示例中,
ji1
声明的显式类型触发了初始值设定项
ii1
的隐式转换的应用。在
ji2
情况下,
ii1
上的类型归属触发转换。

一些示例Scala

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

这有帮助吗?

记住,除非没有人对你的问题做出满意的回答,否则你应该接受其中一个答案。什么?然后告诉我们您尝试了什么
,IntelliJIDEA向我显示一个错误:
无法解析符号“迭代器”
请编辑您的问题(或启动一个新问题)以包含您正在使用的代码。另外,确保Java编译在类路径中有Scala库。它是scala开发工具包的基本目录中的文件
lib/scala library.jar
for(Item item: JavaConverters.seqAsJavaListConverter(seq).asJava()) {
    // Do thing with item
}