gpt4 book ai didi

java - 将所有 HashMap 键小写

转载 作者:太空狗 更新时间:2023-10-29 22:53:14 27 4
gpt4 key购买 nike

我遇到过这样一种情况,我想将 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());
}

然而,当我的服务器在我即将复制 map 的这一次过载时,这导致了一些 OutOfMemory 错误。

现在我的问题是,我怎样才能以最小的内存占用来完成这项任务?

在小写后删除每个键 - 添加到新 map 有帮助吗?

我可以利用 java8 流来加快速度吗? (例如像这样的东西)

Map<String, Long> lowerCaseMap = myMap.entrySet().parallelStream().collect(Collectors.toMap(entry -> entry.getKey().toLowerCase(), Map.Entry::getValue));

更新它似乎是一个 Collections.unmodifiableMap 所以我没有

的选项

removing each key after lowercased - added to the new Map

最佳答案

不使用 HashMap,您可以尝试使用 TreeMap 并进行不区分大小写的排序。这将避免为每个键创建小写版本的需要:

Map<String, Long> map = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
map.putAll(myMap);

构建此映射后,put()get() 将不区分大小写,因此您可以使用全小写键保存和获取值.遍历键将返回它们的原始形式,可能是大写形式。

下面是一些类似的问题:

关于java - 将所有 HashMap 键小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41225031/

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