Получить значение из Map of Map без исключений нулевого указателя - PullRequest
5 голосов
/ 03 апреля 2020

У меня есть

Map<String, Map<String, Time>> map = new HashMap<String, Map<String, Time>>();
Time t = map.get("key1").get("key2"); 

Есть ли способ использовать лямбду, чтобы получить значение Time t без NullPointerException между ними. Так что если key1 возвращает нулевое значение, то t должно быть нулевым, а код не должен выдавать нулевой указатель

Ответы [ 2 ]

9 голосов
/ 03 апреля 2020

Используйте getOrDefault, введенный в Java8 с вашим ключом и Collections.emptyMap() в качестве значения по умолчанию. Вот как это выглядит.

Time t = map.getOrDefault("key1", Collections.emptyMap()).get("key2");
1 голос
/ 03 апреля 2020

В Java 8

Time t = Optional.ofNullable(map.get("key1"))
            .map(m -> m.get("key2"))
            .orElse(null);
...