[JAVA8] HashMap에 getOrDefault 와 putIfAbsent 의 차이
getOrDefault : key 값이 없다면 입력시 설정한 default 값을 반환
putIfAbsent : key 값이 없다면 입력 된 key와 value 를 입력, 해당 key가 존재하면 입력 되었던 값 반환
HashMaprefs : http://stackoverflow.com/questions/29539336/which-one-is-better-getordefault-or-putifabsent-of-hashmap-in-javahm = new HashMap<>(); // 1. 비어있는 HashMap에서 get 호출 System.out.println("key가 없을 때 : " + hm.get("key")); // 결과 : key가 없을 때 : null // 2. 비어있는 HashMap에서 getOrDefault 호출 System.out.println("getOrDefault() : " + hm.getOrDefault("key", "car")); // 결과 : getOrDefault : car // 3. key, value 입력 System.out.println("putIfAbsent() : " + hm.putIfAbsent("key", "ship")); // 결과 : putIfAbsent : null // 이전값이 존재하지 않기 때문에 null 반환 // 4. putIfAbsent으로 key, value 입력 후 동일한 key 값 재호출 System.out.println("putIfAbsent() : " + hm.putIfAbsent("key", "bike")); // 결과 : putIfAbsent : ship System.out.println("values in map : "+hm.toString()); // 결과 : {key=ship} // getOrDefault은 해당 key가 없을 경우 값을 set은 하지 않고 정해진 default 값만 리턴 하기 떄문에 car 없음 // putIfAbsent는 이미 동일한 key로 된 값이 입력되어있었기 때문에 나중에 입력한 bike로 덮어 씌워지지 않음 // 5. 신규 key, value 입력 System.out.println("putIfAbsent() 으로 신규 key값 입력 : "+hm.putIfAbsent("key2", "bike")); // 결과 : putIfAbsent으로 신규 key값 입력 : null // 6. 최종 값 출력 System.out.println("values in map : "+hm.toString()); // {key2=bike, key=ship}
댓글
댓글 쓰기