所有哈希映射键均小写
2022-09-02 09:16:01
我遇到了一个场景,我想把HashMap的所有键都小写(不要问为什么,我只需要这样做)。HashMap有数百万个条目。
起初,我以为我只是创建一个新的Map,迭代要小写的Map的条目,然后添加相应的值。这个任务应该每天只运行一次或类似的东西,所以我想我可以裸露这个。
Map<String, Long> lowerCaseMap = new HashMap<>(myMap.size());
for (Map.Entry<String, Long> entry : myMap.entrySet()) {
lowerCaseMap.put(entry.getKey().toLowerCase(), entry.getValue());
}
但是,当我的服务器在我即将复制地图的这一次过载时,这会导致一些OutOfMemory错误。
现在我的问题是,如何以最小的内存占用完成此任务?
在小写后删除每个键 - 添加到新的地图中会有所帮助吗?
我可以利用java8流来使它更快吗?(例如类似这样的东西)
Map<String, Long> lowerCaseMap = myMap.entrySet().parallelStream().collect(Collectors.toMap(entry -> entry.getKey().toLowerCase(), Map.Entry::getValue));
更新似乎这是一个,所以我没有选择Collections.unmodifiableMap
在小写后删除每个键 - 添加到新地图