Scala的HashSet似乎没有实现Set?

时间:2017-02-28 10:18:32

标签: scala hashset

我有一个Scala类:

class Example {
    def fooBar() : String = {
        // do some stuff

        var whistles = new HashSet[String]()
        fizzBuzz(whistles)

        // do some more stuff
    }

    def fizzBuzz(whistles : Set[String]) : Unit = {
        // do some stuff down here
    }
}

当我调用fizzBuzz方法(来自fooBar内部)时,这给了我编译器错误,说明:

  

类型不匹配; found:需要java.util.HashSet [String]:设置[String]

我在这里缺少什么?! HashSet实施Set,我最后一次检查...

2 个答案:

答案 0 :(得分:6)

您将java.util.HashSet[A]HashSet的java版本)与scala.collection.immutable.Set[A]混合在一起。您想要scala.collection.immutable.HashSet[A]代替:

val whistles = scala.collection.immutable.HashSet[String]()
fizzBuzz(whistles)

答案 1 :(得分:-2)

Scala有很好的集合实现。它有两种集合。

  1. 可变收集(读写)

    <强> scala.collection.mutable。*

  2. 不可变集合(只读)

    <强> scala.collection.immutable。*

  3. 你不应该混淆两种变体。

    可变

      val immutableHashSet = scala.collection.immutable.HashSet[String]("Name", "Age", "Address")
        immutableHashSet.foreach { println }
    

    <强>不可变

    {{1}}