Scala HashMap#包含任何期望

Vic*_*r S 1 scala

我试图使用如下所示的Scala HashMap,当我尝试在HashMap上进行操作时,出现类型不匹配的情况。除了使用Java HashMap,我该怎么写?

import scala.collection.mutable._

object Solution {

  def twoSum(nums: Array[Int], target: Int): Array[Int] = {
    var lookupTable = new HashMap()

    for(i <- nums.indices) {
      if (lookupTable.contains(target - nums(i)))
        return Array(lookupTable(i), i)
      lookupTable.put(nums(i), i)
    }

    throw new Exception
  }
}
Run Code Online (Sandbox Code Playgroud)

Lev*_*sey 5

在没有类型说明的情况下,空HashMapHashMap[Nothing, Nothing],这是因为可变HashMap是不变的,这意味着您拥有一个不能放入任何东西或从中取出任何东西的集合。

因此,有两种方法可以解决此问题:

您可以使用可变的HashMap[Int, Int]

val lookupTable = HashMap[Int, Int]()
Run Code Online (Sandbox Code Playgroud)

另外,您可以使用不可变HashMap,它在值类型上是协变的,而在键类型上在技术上是不变的,但是有一种解决方法:

var lookupTable = scala.collection.immutable.HashMap()

for (i <- nums.indices) {
  if (lookupTable.contains(target - nums(i))) return Array(lookupTable(i), i)
  else lookupTable = lookupTable ++ Seq((nums(i), i))
}
Run Code Online (Sandbox Code Playgroud)