java - 如何将值映射到嵌套 TreeMap

标签 java nested treemap

嵌套 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,如上所示,但我尝试过的任何方法都不起作用。做我正在尝试的事情的正确方法是什么?

最佳答案

您必须一次一步地完成,例如假设所有子 map 都已存在的简单情况(请注意,我们获取现有 map ):

map.get("1").get("1").put("1", "111");

但是,根据您的描述,情况并非如此,因此,如果条目不存在,则每一步都必须创建一个新条目,因此它会变得更加复杂,因为您必须查看向上当前 map ,然后创建/添加:

// 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 来维护子节点列表。

关于java - 如何将值映射到嵌套 TreeMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42497856/

相关文章:

java - 在没有嵌入 pig 脚本的情况下在 java 中运行 pig

java - MapReduce:一行输入文件的两次拆分(执行map方法)

javascript - 如何使用嵌套指令保留范围?

Java 检索 JSON 中嵌套字段的方法

javascript - 如何从嵌套对象中获取键?

Java TreeMap 自定义比较器奇怪的行为

java - cucumber 如何查找功能文件是否已执行?任何Java方法?

java - 修改 IntelliJ 为 Maven 项目的 Tomcat 或 Jetty 配置的资源创建符号链接(symbolic link)

java - 使用 TreeMap(21.9- Java 简介,Liang,第 10 版)

java - 更新 map 键值java