0,"game-6ren">
gpt4 book ai didi

scala - 初始化hashmap时元素太多

转载 作者:行者123 更新时间:2023-12-01 09:17:53 25 4
gpt4 key购买 nike

当我像这样在初始化时设置不可变 HashMap 内容时:

var result_tags=HashMap[String,Int]()
result_tags=("video"->0,"game"->0,"news"->0,"ee"->0,"sport"->0,
"shop"->0,"ju"->0,"story"->0,"pho"->0,"con"->0,"live"->0,"life"->0,"soft"->0,"hire"->0,"car"->0,
"mm"->0,"mus"->0,"mob"->0,"male"->0,"heal"->0, "sca"->0,"bank"->0,"mail"->0,"cool"->0,"pict"->0, "dl"->0)

它给了我错误:

too many elements for tuple:26,allowed:22

这意味着元组的最大数量是 22。我知道 -> 用于创建元组。是否有其他方法可以在没有元素数量限制的情况下初始化 hashmap。

最佳答案

你实际上在做的是初始化一个巨大的 Tuple 类型并尝试将它分配给 result_tags 类型为 HashMap 的变量>,即使元组大小不超过也不行最大尺寸。

因此,您收到的有关元组的错误不是指您使用的 -> 语法,而是指 (...) 列表中的元素数量.即使你这样写,你也会得到同样的错误:

(("video", 0), ("game", 0), ..., ("dl", 0))

其次,在你的情况下,你应该这样做:

var result_tags = HashMap("video" -> 0, "game" -> 0, ..., "dl" -> 0)

(请注意,我省略了类型信息,因为 Scala 会为您推断类型。)

(a1, a2, ..., aN) 语法在 Scala 中是完全不同的东西,因为它初始化一个元组类型。每一个这样的声明都被转换成一个 TupleN 类型,其中最大大小是 22。所以 Scala 库实际上有来自 Tuple1 的 22 个不同的 Tuple 类到 Tuple22

第三,你的风格可以做一些修正

  • 您应该更喜欢 map 的不可变版本,即 scala.collection.Map
  • 你应该更喜欢不可变变量,这意味着 val 而不是 var
  • 而且不太重要,但变量名最好是驼峰式,所以应该是 resultTags

关于scala - 初始化hashmap时元素太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39673650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com