scala 迭代 java hashSet

scala iterate java hashSet

我想知道如何在 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 会更好吗?

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

import scala.collection.JavaConverters._

这让您可以将 Java 集合转换为 Scala 集合,使用 asScala

因此,如果您有一个名为 setHashSet 实例,您可以这样做:

set.asScala.map(value => doSomething(value))

或者任何您想做的事情,例如 filterfoldLeft

仅供参考,上面的示例可以在语法上加糖:

set.asScala.map(doSomething)