我想知道如何在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
答案 0 :(得分:3)
由于您显然使用Java HashSet
,请先执行此操作:
import scala.collection.JavaConverters._
这使您可以使用asScala
将Java集合转换为更易于使用的Scala集合。
因此,如果您有一个名为HashSet
的{{1}}实例,则可以执行以下操作:
set
或者您想做的任何事情,例如set.asScala.map(value => doSomething(value))
,filter
等
仅供参考,上面的例子可以在语法上加以说明:
foldLeft