gpt4 book ai didi

java - 查找 HashMap 中带有某个字符的所有键并替换它

转载 作者:行者123 更新时间:2023-12-02 04:42:50 26 4
gpt4 key购买 nike

我有一个 HashMap,现在我需要找到 HashMap 中包含特定字母的所有键,并将其替换为另一个字母

最佳答案

你可以试试这个:

public void replaceKeysChar(char originalChar, char newChar, Map<String, ?> map) {
Map<String, Object> tempMap = new HashMap<String, Object>();
for (Map.Entry<String, ?> entry : map.entrySet()) {
String key = entry.getKey();
if(key != null){
key = key.replace(originalChar, newChar);
}
tempMap.put(key, entry.getValue());
}
map.clear();
map.putAll(tempMap);
}

这样你只处理 char,并且不改变实现。另外,当您迭代时,您不会在 map 中添加项目(这将是一个坏主意)。

如果您不关心实现,只需返回 tempMap 并删除 clear/putAll 部分(它将消耗更少的资源)。

编辑:

在@locka的answer之后我想我应该指定这个方法不能处理冲突。

如果您的 map 包含键“toto”和“tata”,并且您执行“replaceKeysChar('a','o', map)”,则仅使用“toto”值和“tata”之间的值之一' s 值将在 map 中,其他值将被忽略。

编辑之二:

要处理异常冲突(@Stephen C),只需将旧的 for 替换为这个:

    for (Map.Entry<String, ?> entry : map.entrySet()) {
String key = entry.getKey();
if(key != null){
key = key.replace(originalChar, newChar);
}
if(tempMap.containsKey(key))
throw new CollisionException();
tempMap.put(key, entry.getValue());
}

关于java - 查找 HashMap 中带有某个字符的所有键并替换它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3854020/

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