scala迭代java hashSet

时间:2017-03-16 22:32:33

标签: java scala hashset iterate

我想知道如何在Scala中惯用迭代java.util.HashSet。目前,我在while循环中使用java迭代器,这似乎不太好。

此外,我想知道可变的可增长缓冲区是否有效,或者是否有可能避免产生不必要的对象。

import java.util

import scala.collection.generic.Growable
import scala.collection.mutable

val javaSet = new util.HashSet[String]()
javaSet.add("first")
javaSet.add("second")

val result: collection.Seq[String] with Growable[String] = mutable.Buffer[String]()
val itr = javaSet.iterator

while (itr.hasNext) {
  result += itr.next
}

result

修改

stream会更好吗? enter image description here

1 个答案:

答案 0 :(得分:3)

由于您显然使用Java HashSet,请先执行此操作:

import scala.collection.JavaConverters._

这使您可以使用asScala将Java集合转换为更易于使用的Scala集合。

因此,如果您有一个名为HashSet的{​​{1}}实例,则可以执行以下操作:

set

或者您想做的任何事情,例如set.asScala.map(value => doSomething(value)) filter

仅供参考,上面的例子可以在语法上加以说明:

foldLeft