Dev/Java

HashMap pulAll & merge

pu3vig 2022. 6. 15. 09:56
728x90
  • target:  2개의 HashMap putAll & merge(Java 1.8+)

 


  • method: 

1. HashMap.putAll()

Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("A", 100);
map1.put("B", 200);
map1.put("C", 300);

Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("A", 1);
map2.put("B", 2);
map2.put("D", 400);

map1.putAll(map2);
// {A: 1, B, 2, C: 300, D: 400}

//map2.putAll(map1);
// {A: 100, B: 200, C: 300, D: 400}

※ map1.putAll(map2);는 map1에 map2를 put하는 형태이기에, 동일한 key가 존재하는 경우, map2의 value로 변경된 결과를 출력

 


2. HashMap.merge() (Java 1.8+)

Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("A", 100);
map1.put("B", 200);
map1.put("C", 300);

Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("A", 1);
map2.put("B", 2);
map2.put("D", 400);

// map1.merge의 parameter로 map2의 forEach의 key/value를 전달
map2.forEach((key, value) -> map1.merge(key, value, (map1Value, map2Value) -> map2Value));
// map1.putAll(map2);와 결과 동일

map2.forEach((key, value) -> map1.merge(key, value, (map1Value, map2Value) -> map1Value + map2Value));
// map1과 map2의 key별 value 합산
// {A: 101, B: 202, C: 300, D: 400}

※ 기존 putAll의 경우 덮어쓰기 형태지만, merge의 경우, 별도 수식 추가 가능

 


 

[Java] 2개의 HashMap 합치기 (putAll, merge)

HashMap.putAll() HashMap.merge() - Java 8 이후 1. HashMap.putAll() 이 방법을 사용하면, 같은 key가 있을 때, value를 덮어 씁니다. 예제  import java.util.HashMap; import java.util.Map; public class Me..

hianna.tistory.com

 

728x90