【发布时间】:2022-10-30 19:36:18
【问题描述】:
问题是我的哈希图占用了太多空间。我想知道代码是否可以以更有效的方式完成而不占用那么多内存。我有一个巨大的数组,我使用 HashMap 的原因是因为我想要一种快速的方法来打印出 where key = 3 的第一次出现,如代码所示。但现在的问题是内存。我仍然希望它相对较快 O(n log n)
ArrayList<String> str = new ArrayList<>();
Map<String, Long> counts2 = new LinkedHashMap<String, Long>();
for(String val : str){
long count = counts2.getOrDefault(val, 0L);
counts2.put(val, ++count);
}
for(String key: counts2.keySet()){
if(counts2.get(key)==3){
System.out.println(list.indexOf(key));
break;
}
}
【问题讨论】:
-
亚历山大你的意思是什么?
-
是的,O(n log n) @AlexanderIvanchenko
-
我也有类似的需求,最终构建了一个由快速进程、键值、磁盘存储系统支持的哈希映射。例如code.google.com/archive/p/jdbm2
-
@user16320675
or memory, I would try removing entries with count > 3- 我怀疑这是否有效,因为这些条目可能会修复。而且很容易出错。考虑有一个字符串出现7次。当计数为4时,该条目被删除,然后它以3的计数重新出现 - 宾果游戏,现在它可以影响结果。 -
@AlexanderIvanchenko 好吗?
标签: java list memory hashmap space