如何将值映射到嵌套的 TreeMap
How to Map Values to a Nested TreeMap
嵌套树图:
TreeMap<String,TreeMap<String,TreeMap<String,String>>> map = new TreeMap<>();
正在尝试将事物映射到 TreeMap:
add("1","1","1","111",map);
map.add("1","1","1","111");
map.put("1", ("1",("1","111")));
我正在尝试将事物映射到嵌套的 TreeMap,如上所示,但我尝试过的都没有奏效。做我正在尝试的事情的正确方法是什么?
您必须一步一步来,例如假设所有子地图都已经存在的简单情况(请注意,我们 get 现有地图):
map.get("1").get("1").put("1", "111");
但是,根据您的描述,情况并非如此,因此,如果不存在,则每一步都必须创建一个新条目,因此它变得更加复杂,因为您有查看当前地图然后 create/add:
// 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
来维护子节点列表。
嵌套树图:
TreeMap<String,TreeMap<String,TreeMap<String,String>>> map = new TreeMap<>();
正在尝试将事物映射到 TreeMap:
add("1","1","1","111",map);
map.add("1","1","1","111");
map.put("1", ("1",("1","111")));
我正在尝试将事物映射到嵌套的 TreeMap,如上所示,但我尝试过的都没有奏效。做我正在尝试的事情的正确方法是什么?
您必须一步一步来,例如假设所有子地图都已经存在的简单情况(请注意,我们 get 现有地图):
map.get("1").get("1").put("1", "111");
但是,根据您的描述,情况并非如此,因此,如果不存在,则每一步都必须创建一个新条目,因此它变得更加复杂,因为您有查看当前地图然后 create/add:
// 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
来维护子节点列表。