scala - Scala HashMap#contains 没有任何期望
问题描述
我正在尝试使用如下所示的 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
}
}
解决方案
在没有类型归属的情况下,空HashMap
是 a HashMap[Nothing, Nothing]
,因为可变的 HashMap 是不变的,这意味着您拥有一个无法放入任何内容或从中取出任何内容的集合。
因此,有两种方法可以解决此问题:
您可以使用可变的HashMap[Int, Int]
:
val lookupTable = HashMap[Int, Int]()
或者,您可以使用 immutable 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))
}
推荐阅读
- arrays - 在 Excel 中使用 sumif 中的数组公式
- intellij-idea - Default SQL Server Session for Intellij
- kubernetes - Kubernetes:如何配置 Service 和 Pod 之间的负载均衡
- python - 如何从使用 python 请求提供文件的 python-eve 端点下载?我不断收到 401 错误
- python - Python中的图形模拟
- swiftui-list - SwiftUI list 移动和选择行
- python - 如何从已构建的注释中向 django 注释日期字段添加天数
- python - Python:使用 ExitStack 避免多个 with 语句的最佳方法
- bash - Apache airflow Bash_operator success while python file failed
- php - 用于 gmail 电子邮件的 PHP mail() 函数不起作用 - SMTP 和 SMTP 端口