我正在计算大型XML文件中属于键(标签)的某些值的频率(例如键“国家”值“USA”,“GER”,“FRA”等发生了多少次) 。我为所有可能的钥匙做这个。地图在Scala中可以包含多少个键是否有限制?
的数据结构使用:
type IntHash=Map[String,Int]
def IntHash()=Map[String,Int]()
type IntHash2=Map[String,IntHash]
def IntHash2()=Map[String,IntHash]()
var keyfreqs:IntHash2=IntHash2()
我更新的结构是这样的:
if(current_tag!="name")
{
var keyfreq=keyfreqs.getOrElse(current_tag,IntHash())
keyfreq+=(current_value->(keyfreq.getOrElse(current_value,0)+1))
keyfreqs+=(current_tag->keyfreq)
}
所有按键可以在除了名字最几千个不同的值。文件中可能有数十万个不同的名称。正如你所看到的,我不允许计算关键字“name”的可能值,因为如果我这样做,程序将停止工作(keyfreq中的键会丢失)。
地图在Scala中可以包含多少个键是否有限制? (如果我允许名字,但只处理有限数量的记录,则该程序有效。)
你的内存限制。 – Maxim
然后我不明白发生了什么事,因为程序从不抱怨内存不足。非常奇怪的行为:如果我为1000条记录运行它,则按预期生成everthing。如果我为100000条记录运行它,除keyfreqs之外的所有密钥均消失(如果剩余的一个密钥正确,则内容将消失)。这里是整个程序:https://github.com/fideplayerslist/fideplayerslist/blob/master/players.scala(我玩弄MAXCNT) – javachessgui
你的代码太长,并且有许多问题混在一起。我想你有一个错误。尝试创建一小段模拟您的问题的代码,然后我们可以尝试提供帮助。 – Maxim