从没有空指针异常的 Map 的 Map 的 Map 中获取值

Jav*_*der 4 java lambda java-8

我有

Map<String, Map<String, Time>> map = new HashMap<String, Map<String, Time>>();
Time t = map.get("key1").get("key2"); 
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用 lambda 来获取 Time t 的值,而没有 NullPointerException 介于两者之间。因此,如果 key1 返回空值,那么 t 应该为空并且代码不应抛出空指针

Rav*_*ala 8

使用getOrDefault在 Java8 中引入的键和Collections.emptyMap()作为默认值。这是它的外观。

Time t = map.getOrDefault("key1", Collections.emptyMap()).get("key2");
Run Code Online (Sandbox Code Playgroud)

  • @Naman当然,当OP有一个合理的默认值时,他们可以使用`map.getOrDefault("key1", Collections.emptyMap()).getOrDefault("key2", Fallback)` (3认同)