gpt4 book ai didi

java - 合并两个 Hash Maps Android

转载 作者:太空狗 更新时间:2023-10-29 13:42:39 24 4
gpt4 key购买 nike

我想合并两个 HashMap。

我可以使用 map1.putAll(map2);但我不想覆盖 key ,因为是的,它们会有冲突的 key 。

所以每个map中的key都会是这样

word1     word1
word2 word2
word3 word3

当我合并它们时,我想:

word1
word2
word3
word4
word5
word6

它可以只覆盖键,只要键是递增的并使用第一个键文本即可,即读取其中一对并提取“word”,因此每个键都是 word1 word2。

但我想到的另一个警告是移动环境,以及我可以做什么而无需放置加载屏幕,甚至无需放置加载屏幕。

作为初学者,我想:

    HashMap<String, Object> hm1 = new HashMap<String, Object>();
hm1.put("key1", "a");
hm1.put("key2", "a");
hm1.put("key3", "a");
HashMap<String, Object> hm2 = new HashMap<String, Object>();
hm2.put("key1", "1");
hm2.put("key2", "2");
hm2.put("key3", "3");

HashMap<String, Object> newHM = new HashMap<String, Object>();
String keyWord = "";
for (String s: hm1.keySet()) {
keyWord = s;
break;
}
int count = 0;
for (Object o : hm1.values()) {
newHM.put(keyWord+count, o);
}
for (Object o : hm2.values()) {
newHM.put(keyWord+count, o);
}

但我想知道,这有多有效?它看起来是正确的,有没有更好的方法来做到这一点?我不想不必要地使用额外的对象

最佳答案

如果您的键是递增的并且基本上代表一个简单的索引,您应该使用 List

您可以尝试自己实现 List,它也将存储一个关键字。

class KeyWordedArrayList<T> extends ArrayList<T>{
private final String keyword;

public KeyWordedArrayList(String keyword){
this.keyword = keyword;
}

public String getKeyword(){
return keyword;
}
}

您还可以执行 Map :

class KeyWordedMap<T> extends HashMap<Integer, T> {
private final String keyword;

public KeyWordedMap(String keyword) {
this.keyword = keyword;
}

public String getKeyword() {
return keyword;
}

@Override
public void putAll(Map<? extends Integer, ? extends T> m) {
for (Map.Entry<? extends Integer, ? extends T> entry : m.entrySet()) {
int i = entry.getKey();
while (this.containsKey(i)) {
i++;
}
this.put(i, entry.getValue());
}
}
}

关于java - 合并两个 Hash Maps Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897668/

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