String과 HashSet을 키와 값으로 사용하는 hashmap이 있습니다. 지도를 업데이트하고 값을 추가하려고합니다.Java8의 HashMap에 대해 혼동 스럽습니다.
제가 동일한 키는 회 추가되고 볼 수있는 출력에
map.putIfAbsent(str.substring(i,j),new HashSet<String>).add(str); //this method gives nullpointerexception
map.computeIfPresent(str.substring(i,j),(k,v)->v).add(str);
을 use- 다음 방법 중 어느 이해할 수없는 초기 값 및 갱신 된 값.
누군가 이러한 방법을 사용하는 방법을 알려주십시오.
NPE의 출처는 무엇입니까? 그것은'str','map' 또는'putIfAbsent'의 리턴입니까? – 4castle
javadoc을 한눈에 보면'putIfAbsent'는 그 키가 아직지도에 없을 때 null을 반환한다고합니다. add()를 호출하기 전에 그 가능성을 고려 했습니까? –
왜 두 가지 방법 중 하나를 선택해야한다고 생각하십니까? 이 목적을 위해 최소한 네 가지 방법이 있지만 나열한 부적절한 것을 세지 않는 것이 좋습니다. – Holger