[Spring] MultiValueMap란

se_niii·2024년 4월 18일
0

JAVA/Spring

목록 보기
1/1

SpringBoot 토이 프로젝트를 하다가, LinkedMultiValueMap의 사용을 알게되었다.


😇 이를 계기로!
MultiValueMap, LinkedMultiValueMap은 무엇인지, Map과 무엇이 다른지 정확하게 알아보겠다.



👩🏻‍💻 토이 프로젝트 어디서 사용?

uri를 만들 때, SearchLocalReq를 쿼리 파라미터로 queryParam()에 넣어야한다.
🧐 하지만 쿼리 파라미터로 일일이 다 만들어주는 것은 너무 귀찮고, 실수할 가능성도 생기게 된다.
➡️ 그러니, MultiValueMap 형태를 미리 만들어 놓고 사용하겠다!

<var uri = UriComponentsBuilder.fromUriString(naverLocalSearchUrl)
                .queryParams(searchLocalReq.toMultiValueMap())
                .build()
                .encode()
                .toUri();
public MultiValueMap<String, String> toMultiValueMap(){
        var map = new LinkedMultiValueMap<String, String>();

        map.add("query",query);
        map.add("display",String.valueOf(display));
        map.add("start",String.valueOf(start));
        map.add("sort", sort);
        
        return map;
}

☑️ Map

  • Map은 Key와 Value의 한 쌍으로 이루어져 있다.
  • Map은 크게 3가지
    1. HashMap
    2. TreeMap
    3. LinkedHashMap
HashMapTreeMapLinkedHashMap
Map의 기본형식이다.HashMap과 동일한 기능에
추가 옵션이들어간다.
HashMap과 동일한 기능에
추가 옵션이들어간다.
key-value 한쌍으로 데이터를 저장하며
중복된 키가 존재하지않는다.
TreeMap은 데이터가 들어올때마다
Key값에따라 알아서 자동으로 정렬이된다.
LinkedHashMap은
입력순서를 보장한다.
Map에있는 데이터(value)를 뽑을때,
키를 기준으로 가져온다.
ex) HashMap에 C B A로 입력 ->
값을 출력할때 C B A그대로 나온다는 보장이없다.
value 뽑을 때 시간복잡도 : O(1)LinkedHashMap은 이와같은 문제를 해결해준다.

☑️ MultiValueMap

  • MultiValueMap은 키의 중복이 허용된다.
MultiValueMap<String, Integer> multiValueMap = new MultiValueMap<>();

multiValueMap.add("A", 150);
multiValueMap.add("A", 280);
multiValueMap.add("A", 480);

List<Integer> a = multiValueMap.get("A");

for(int data : a){
	System.out.println("data = "+data);
}

// 출력 결과
// data = 150
// data = 280
// data = 480
  • MultiValueMap은 키를 가져올 때, 리스트 형태로 반환하여, 같은 키 "A"를 받은 value들을 저장해둔다.

☑️ MultiValueMap 언제 사용하지?

  1. Map을 사용하고 싶을 때
  2. 중복된 키로 들어오는 value 값들을 온전히 저장하고 싶을 때

☑️ MultiValueMap 사용 시 주의 사항

  1. MultiValueMap 인터페이스는 자바에 기본 내장된 인터페이스가 아니라, 스프링에서 제공하는 인터페이스이다.

☑️ LinkedMultiValueMap

  • LinkedMultiValueMap 역시, 순서를 보장하는 MultiValueMap의 종류이다.



출처
자바 Map 과 MultiValueMap의 대해서
[Spring] MultiValueMap은 무엇일까?
TIL - HttpHeaders | LinkedMultiValueMap | 카카오 소셜 로그인 구현 중 오류

0개의 댓글