Scala';s HashSet不';我好像没能实现设定?

Scala';s HashSet不';我好像没能实现设定?,scala,hashset,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 = {

我有一个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
内部)时,会出现编译器错误,说明:

类型失配;找到:java.util.HashSet[String]必需:Set[String]


我错过了什么
HashSet
实现了
Set
,上次我选中…

您正在混合
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)

您将
java.util.HashSet[A]
scala.collection.immutable.Set[A]
混合使用,后者是
HashSet
的java版本。您想要的是
scala.collection.immutable.HashSet[A]

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

Scala拥有整洁的集合实现

  • 可变集合(读和写)

    scala.collection.mutable.

  • 不可变集合(只读)

    scala.collection.immutable.

  • 您不应该混淆这两种变体

    可变的

        val mutableHashset = scala.collection.mutable.HashSet[String]()
        mutableHashset += "name"
        mutableHashset.foreach { println }
    
    不可变的

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

    Scala拥有整洁的集合实现

  • 可变集合(读和写)

    scala.collection.mutable.

  • 不可变集合(只读)

    scala.collection.immutable.

  • 您不应该混淆这两种变体

    可变的

        val mutableHashset = scala.collection.mutable.HashSet[String]()
        mutableHashset += "name"
        mutableHashset.foreach { println }
    
    不可变的

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

    这与不可变集合和可变集合有什么关系?他的错误消息表明他正在使用
    java.utl.HashSet
    。这与不可变集合和可变集合有什么关系?他的错误消息表明他正在使用
    java.utl.HashSet