如何串連2的Java Map<String, Object>
具有相同的密鑰相同的密鑰,而不覆蓋如何串連2 Java的地圖<字符串,對象>與無覆蓋
嗨,我試圖串聯在Java 2點的地圖,並與putAll()
嘗試,但此方法重寫用相同的密鑰
實施例初始映射值:
{Foo: "A", Bar: "B"}
{Foo: "C", Bar: "D"}
我要一些這樣的:
{ Foo0: "A", Bar0: "B", Foo1: "C", Bar1: "D" }
如何串連2的Java Map<String, Object>
具有相同的密鑰相同的密鑰,而不覆蓋如何串連2 Java的地圖<字符串,對象>與無覆蓋
嗨,我試圖串聯在Java 2點的地圖,並與putAll()
嘗試,但此方法重寫用相同的密鑰
實施例初始映射值:
{Foo: "A", Bar: "B"}
{Foo: "C", Bar: "D"}
我要一些這樣的:
{ Foo0: "A", Bar0: "B", Foo1: "C", Bar1: "D" }
我建議你考慮以下結構:Map<String, List<String>>
。
在這種情況下,您不需要重寫一個鍵,只需在該鍵的末尾添加一個值即可。另外,您不必考慮如何命名新密鑰(Bar0
,Bar1
)。最後,如果出現新地圖(第三,第四),則其值將被添加而沒有問題。
你一些僞代碼:
map.put(key,
map.get(key) == null ? newListAddValueReturnList :
getListAddValueReturnList);
好,代碼也爲你寫的:
String v = map.get(key);
if(v == null)
map.put(key, new ArrayList<String>() {{ add(value); }});
else
v.add(value);
這不是完全清楚你的要求是什麼,因爲@JohnBollinger指出。但是,如果我們把你的例子很簡單地說,你只是想添加一個索引每個鍵結束,在這種情況下,你可以做這樣的事情:
static Map<String, Object> merge(Map<String, Object> map1, Map<String, Object> map2) {
Map<String, Object> result = new HashMap<>();
map1.forEach((k, v) -> result.put(k + "0", v));
map2.forEach((k, v) -> result.put(k + "1", v));
return result;
}
構建的方法手動檢查的關鍵是有在添加之前? –
你嘗試了什麼? – GManNickG
我建議你在添加新鍵時創建新鍵。 –