SpringBoot 강의를 듣는 중 MultiValueMap이라는 인터페이스를 만났다.
MultiValueMap 인터페이스는 자바 API문서에서는 찾아볼 수 없고, 스프링 API문서에서 찾을 수 있다.
자바에 내장된 인터페이스가 아니라 스프링에서 제공하는 인터페이스라는 것을 알 수 있었다.
위의 MultiValueMap인터페이스를 보면 Map 인터페이스를 상속 받을 때 Value값을 List로 받는것을 확인할 수 있다.
즉, 하나의 Key와 하나 이상의 Value로 이루어진 리스트를 받는다는 말이다.
// Java의 기존 Map
Map<String, Integer> basicMap = new HashMap<>();
// 스프링의 MultiValueMap
MultiValueMap<String,Integer> multiValueMap = new LinkedMultiValueMap<>();
basicMap.put("test",1);
basicMap.put("test",2);
multiValueMap.add("test",1);
multiValueMap.add("test",2);
System.out.println("basicMap = " + basicMap);
System.out.println("multiValueMap = " + multiValueMap);
//실행결과
//multiValueMap = {test=[1, 2]}
//basicMap = {test=2}
일반적인 Map을 구현한 HashMap의 인스턴스인 basicMap은 Key가 중복될 수 없다.
따라서 마지막으로 put된 basicMap.put("test",2)가 최종적으로 Map에 저장된다.
MultiValueMap은 add를 하는 경우에 Key값이 중복되면 해당 Key값에 List로 모두 들어가는 것을 볼 수 있다.
MultiValueMap은 아래와 같이 put도 가능하다. (value값에 List를 인자로 한번에 줄 수 있다.)
MultiValueMap<String,Integer> multiValueMap = new LinkedMultiValueMap<>();
// 정수가 담기는 리스트를 생성
List<Integer> intList = new LinkedList<>();
// 리스트에 1,2,3 추가
intList.add(1);
intList.add(2);
intList.add(3);
multiValueMap.put("putTest",intList);
System.out.println("multiValueMap = " + multiValueMap);
//실행결과
//multiValueMap = {putTest=[1, 2, 3]}
'Framework > Spring🌱' 카테고리의 다른 글
@Transactional 과 Rollback규칙 (feat. Checked Exception , Unchecked Exception) (1) | 2025.04.14 |
---|---|
[Spring]@RequiredArgsConstructor (0) | 2024.05.02 |
[Spring] @Autowired란? (0) | 2024.05.02 |
[Spring Boot / Error] java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either. (0) | 2024.03.31 |
Di / IoC (0) | 2021.07.15 |