我试图使用如下所示的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)
在没有类型说明的情况下,空HashMap为HashMap[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)
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |