您必須一次完成一個步驟,例如,簡單的情況下,假設所有子映射已經存在(注意,我們得到現有地圖):
map.get("1").get("1").put("1", "111");
然而,這種情況並非如此根據您的描述,等的每一步你」將不得不創建一個新的項目,如果不存在,所以它變得更加複雜,因爲你必須查找當前地圖,然後創建/加入:
// from your example:
String key1 = "1";
String key2 = "1";
String key3 = "1";
String value = "111";
// insert if doesn't exist yet:
TreeMap<String,TreeMap<String,String>> map1 = map.get(key1);
if (map1 == null) {
map1 = new TreeMap<String,TreeMap<String,String>>();
map.put(key1, map1);
}
// and again:
TreeMap<String,String> map2 = map1.get(key2);
if (map2 == null) {
map2 = new TreeMap<String,String>();
map1.put(key2, map2);
}
// and now we're set up and ready to go:
map2.put(key3, map3);
由於它是一種累贅,它一般有助於編寫一個實用程序功能爲您執行此操作。
或者,如果它是適合您的應用程序,你可以考慮崩潰您的整個結構成一個單一的地圖,並使用更復雜的鍵,例如:
static class ComplicatedKey implements Comparable<ComplicatedKey> {
String key1;
String key2;
String key3;
public ComplicatedKey (String key1, String key2, String key3) { ... }
// implement equals and compareTo appropriately.
}
然後:
TreeMap<ComplicatedKey,String> map = ...;
map.put(new ComplicatedKey("1", "1", "1"), "111");
另一種選擇是推出自己的多級樹,甚至可以在每個節點內部使用TreeMap
來維護子節點列表。
您的第一個解決方案非常完美!非常感激! – NikonJR