Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java的多级hashMap中放置(键、值)_Java_Hashmap - Fatal编程技术网

在java的多级hashMap中放置(键、值)

在java的多级hashMap中放置(键、值),java,hashmap,Java,Hashmap,计划如下: Hash<String, HashMap<String, HashMap<String, String>>> data = new Hash<String, HashMap<String, HashMap<String, String>>>(); HashMap<String, String> person = new HashMap<String, String>();

计划如下:

Hash<String, HashMap<String, HashMap<String, String>>> data = new Hash<String, HashMap<String, HashMap<String, String>>>();

HashMap<String, String> person = new HashMap<String, String>();
        person.put("Name", json.getString("Name"));
        person.put("Contact", json.getString("Contact"));
        person.put("Email", json.getString("Email"));
        person.put("Rent Start", json.getString("Rent Start"));
        person.put("Rent End", json.getString("Rent End"));

String period = json.getString("Rent Start").substring(0, 7) + " To " + json.getString("Rent End").substring(0, 7);

data.get(roomType).put(period, person);
当我这样做时,hashmap中第二级的所有值都成为person hashmap

例如,在“roomtype1”中,有两个期间,“2015-07至2016-07” 以及“2015-07至2017-07”

当我运行此代码时:

data.get(roomtype1).put("2015-07 To 2016-07", person);
哈希映射通过了

data.get(roomtype1.get(“2015-07至2017-07”)

也会变成

我可以知道为什么吗


(另外,最初的hashmap有5个级别。我在这篇文章中减少了它,因为它更容易理解)

Java对象是引用类型

data.get(key1)
将在第二级获取hashmap对象。使用该对象,您将向其中添加一个或多个对象

当我这样做时,hashmap中的所有值都将显示在第二级 成为加法hashmap

data.get(roomType)
是什么?它是否在做类似于:

public V get(K key) {
  V actual = super.get(key);
  if (null == actual) {
    actual = getANewV();
    super.put(key, actual);
  }
  return actual;
}
并且您确定
getANewV()
总是返回一个新实例,而不是相同的实例(这将解释hashmap中的所有值在第二级成为加法hashmap)

你的需求已经存在于多重地图的问题中(参见Guava)。你应该看看这是否对你有用。
除此之外,我个人会使用对象而不是多层贴图。

你能在代码中添加值到hashMap
data
中的部分吗?你能在你的
data
hashMap中发布内容吗?我已经编辑了我的帖子。数据是中文的。恐怕你不明白。基本上,我首先将一些数据放入HashMapPerson,然后将其添加到所选的第二级hashmap中。在java中使用中文会是这个问题的一个可能原因吗?您所说的“hashmap中的所有值在第二级成为加法hashmap”是什么意思?5层hashmap?0_0. 你考虑过使用类,或者类似JSON数组对象的东西吗?是的,我想在hashmap中再添加一个元素,但问题代码不仅改变了所选的第二级hashamp,而且还改变了第二级中其他具有不同键的hashmap。谢谢。我将尝试改用object。在这种情况下使用hashmap似乎真的很愚蠢。。。。。
public V get(K key) {
  V actual = super.get(key);
  if (null == actual) {
    actual = getANewV();
    super.put(key, actual);
  }
  return actual;
}