Сомнение здесь в том, что если ключа на карте нет, он возвращает ноль, и здесь я пытаюсь получить это в Integer
.
import java.util.*;
class Main {
public static void main(String[] args) {
HashMap<String,Integer> hm =new HashMap<>();
hm.put("abc",1);
hm.put("xyz",1);
System.out.println(hm.get("pqr"));
Integer result = hm !=null ? hm.get("pqr") : 0;
System.out.println(result);
}
}
Вывод:
null
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:10)
Если я разделю троичный оператор на if-else
Например:
import java.util.*;
public class TestMain {
public static void main(String[] args) {
HashMap<String,Integer> hm =new HashMap<>();
hm.put("abc",1);
hm.put("xyz",1);
System.out.println(hm.get("pqr"));
Integer result;
if ( hm != null){
result = hm.get("pqr");
} else
result =0;
System.out.println(result);
}
}
Вывод:
null
null
Что не так в троичном операторе?