Java

[Java] MultiValueMap이란

인생은단짠단짠 2022. 11. 17. 21:10

 

스프링 강의를 듣다가 강사님께서 mutiValueMap을 사용하시는데 나는 처음보는거라 궁금해서 찾아봤다.

hashmap, treemap, linkedhashmap이 있는데 왜 이들을 사용하지 않고 mutiValueMap을 사용하셨던걸까??

 

일단 기존에 알고있었던 3가지 Map부터 정리해보자

 

1. HashMap 

  • key, value 쌍으로 데이터를 저장한다.
  • 데이터를 조회할때 key값을 통해 데이터를 가져온다.
  • 저장위치를 해쉬함수를 통해 바로 알 수 있기 때문에 검색이 빠르다.

 

2. TreeMap

HashMap과 동일한 기능을 가지고 있고, 추가로 데이터가 들어올때마다 key값에 따라서 자동 정렬된다.

 

 

3. LinkedMap

HashMap과 동일한 기능을 가지고 있고, 데이터의 입력 순서를 저장하고 있다.

 

 

HashMap이 Map의 기본형식으로 이에 기능이 추가된 것이 TreeMap과 LinkedMap이라고 볼 수 있다.

 

 

MutiValueMap

 

MuliValueMap은 key의 중복이 허용된다. 

즉, 같은 키를 가진 데이터가 계속 추가될 수 있다는 뜻이다.

 

MultiValueMap<String, Integer> multiValueMap = new LinkedMultiValueMap<>();
Map<String, Integer> map = new HashMap<>();

multiValueMap.add("a",1);
multiValueMap.add("a",2);
multiValueMap.add("a",3);

map.put("a",1);
map.put("a",2);
map.put("a",3);

System.out.println(multiValueMap.get("a"));
System.out.println(map.get("a"));
[1,2,3]
3

 

위의 코드를 실행하면 multiValueMap에는 "a" 라는 key값을 가진 데이터가 추가될때 list로 value값이 저장된다는 것을 알 수 있다. 

반면 그에 비해 그냥 hashmap은 "a"라는 key값을 가진 데이터가 들어올 때마다 새로운 value값으로 업데이트 된다.

 

 

multiValueMap은 아래와 같은 HashMap이라고 생각하면 될 것 같다.

Map<String, List<Integer>> map2 = new HashMap<>();

HashMap에 List를 저장할때 보다 코드가 깔끔하다.

 

 

따라서 MutiValudMap은 map을 사용하고 싶을때,

중복된 키값의 value들을 모두 저장하고 싶을때 활용하면 될 것 같다.

'Java' 카테고리의 다른 글

[ Java ] Enum  (0) 2022.11.23
[Java] Arrays.asList 와 List.of  (0) 2022.11.17
[Java] 스트림  (0) 2022.10.31
토이프로젝트 후 느낀점  (0) 2022.10.29
[Java] 컬렉션 프레임워크 활용  (0) 2022.10.20