java - 将值放入 LinkedHashMap 多维

标签 java multidimensional-array linkedhashmap

我有以下结构:

import java.util.LinkedHashMap;
...
LinkedHashMap <String, Object>level0 = new LinkedHashMap<String, Object>();
LinkedHashMap <String, Object>level1 = new LinkedHashMap<String, Object>();
LinkedHashMap <String, Object>level2 = new LinkedHashMap<String, Object>();
LinkedHashMap <String, Object>level3 = new LinkedHashMap<String, Object>();

level1.put("level2", level2);
level2.put("level2", level3);

level0.put("level1", level1);

System.out.println(level0);

输出:

{
    level1={
        level2={}
    }
}

我需要通过“路径”(或其他东西)设置一个值,如下所示:

MapThisObject example = new MapThisObject(level0);
example.putValue("level1.level2", "string", "test");
example.putValue("level1.level2", "int", 1);
example.putValue("level1.level2", "object", new LinkedHashMap());

System.out.println(example.result());
/*output:
{
    level1={
        level2={
            string="test",
            int=1,
            Object={}
        }
    }
}
*/

换句话说,有可能通过“路径”(如 Xpath)为“多维对象”放置或设置值?

最佳答案

一个简单的例子

public static void set(Map<String, Object> map, String path, Object value) {
    String[] parts = path.split("\\.");
    for(int i = 0; i < parts.length-1 ; i++) {
        String key = parts[i];
        Map<String, Object> map2 = (Map<String, Object>) map.get(key);
        if (map2 == null) {
            map.put(key, map2 = new LinkedHashMap<String, Object>());
        }
        map = map2;
    }
    map.put(parts[parts.length - 1], value);
}

set(example, "level1.level2.string", "test");
set(example, "level1.level2.int", 1);

关于java - 将值放入 LinkedHashMap 多维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21389474/

相关文章:

java - Liferay Hook - 获取用户IP登录

java - 使用 The Grinder 进行 Web 应用程序性能测试

c++ - 填充动态数组时获取退出状态-1

java - H2 数据库用户定义的 java 函数类未找到

java - 带循环条件,而不是一个长条件

c++ - Char 2D Array 分别对待字符

php - 如何通过内键对多维数组进行排序

java - 关于自动装箱,Java 中 Map<Integer, Integer> 的有效替代方案?

java - 如果我们将 'put' 和新值赋给 Linkedhashmap 中已经存在的键会发生什么

java - 如何将 LinkedHashMap 的键添加到 JList 中?