繁体   English   中英

迭代Java中的Scala集合

[英]iterating over Scala collections in Java

我如何在Java中迭代Scala集合?

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

这有帮助吗?

从集合中获取Scala Iterator并使用scala.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导入任何给定范围后,会有一个隐式转换,它会将任何Scala Iterator[T]转换为相应的Java Iterator<T> 在前面的示例中, ji1声明的显式类型触发了初始化器ii1的隐式转换的应用。 ji2情况下,类型归属ii1触发转换。

for(Item item: JavaConverters.seqAsJavaListConverter(seq).asJava()) {
    // Do thing with item
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM