如何在嵌套HashMap中放入/获取值

use*_*105 8 java nested hashmap

我想创建一个嵌套的HashMap,它将接受float类型的两个键,并给出Integer类型的值.

 public static HashMap<Float, HashMap<Float, Integer>> hashX = new HashMap<Float,HashMap<Float, Integer>>();
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来放置/获取像普通的HashMap那样的值

  hashX.put(key, value);
  hashX.get(key);
Run Code Online (Sandbox Code Playgroud)

或者它是一个必须使用的更复杂的方法?我在网上搜索了一个解决方案,但我发现很难找到适用于我的解决方案.任何帮助,将不胜感激!

isv*_*all 10

Map<Float, Map<Float, Integer>> map = new HashMap<>();

map.put(.0F, new HashMap(){{put(.0F,0);}});
map.put(.1F, new HashMap(){{put(.1F,1);}});

map.get(.0F).get(.0F);
Run Code Online (Sandbox Code Playgroud)

  • 并出现臭名昭着的实例初始化程序块.:) (2认同)
  • @JanacMeena 这是主观的,但我认识的大多数人不喜欢它(包括我),因为它使代码更难阅读和推理。 (2认同)

jlo*_*rdo 5

您必须将get()嵌套映射从外部映射中取出,然后调用可以调用put()andget()就可以了

float x = 1.0F;
HashMap<Float, Integer> innerMap = hashX.get(x);
if (innerMap == null) {
    hashX.put(x, innerMap = new HashMap<>()); // Java version >= 1.7
}
innerMap.put(2.0F, 5);
Run Code Online (Sandbox Code Playgroud)