MultiValueMap 와 HashMap 의 차이점

빙그르·2023년 8월 15일

JAVA

목록 보기
7/11

HTTP 로 요청을 하는데 MultiValueMap 이 등장했다. 두둥 처음보는건데?

MultiValueMap과 HashMap은 모두 키와 값의 쌍을 저장하는 자료구조입니다. 하지만, MultiValueMap은 키에 여러 개의 값을 저장할 수 있는 반면, HashMap은 키에 하나의 값만 저장할 수 있습니다.

MultiValueMap<String, String> map = new MultiValueMap<>();
// key1에 value1과 value2 두개를 저장할 수 있다.
map.put("key1", "value1");
map.put("key1", "value2");
map.put("key2", "value3");

System.out.println(map.get("key1")); // [value1, value2]
HashMap<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key1", "value2"); // 여기는 value1이 삭제되버린다. 하나만 저장가능
map.put("key2", "value2");

아 그래 이해는 했는데 이걸 DTO에서 어떻게 받아주냐고요

POST 요청은 DTO 그대로 들고가서 받아도 됨
하지만 GET은 다름

Query string를 사용하는 Get의 경우엔 Dto클래스를 그대로 사용하진 못하고, 직접 URL 파라미터를 만들거나 / MultiValue Map 을 사용해야만 합니다.

만약 일반적인 Map<Key, Value>로 선언된 Map 클래스를 사용할 경우 Http.GET으로 List 값을 넘길수가 없다.

하지만 사실 Http.GET 요청에 List로 값을 넘길 경우가 거의 없음

따라서 MultiValue 로 받아다가 hashMap으로 바꾼다는데.. 이거는 여기를 보면 될거같다.

출처: https://jojoldu.tistory.com/478

0개의 댓글