728x90
map의 종류
- HashMap
- TreeMap
- LinkedHashMap
HashMap
- Map의 기본 형태
- key:value
- 중복된 key 허용하지 않음
- 데이터를 뽑을 때 Key를 기준으로 가져옴
- 마치 Key를 인덱스처럼 가져와 value를 가져오기 때문에 시간복잡도 O(1)
TreeMap
- HashMap + 추가 옵션
- 데이터가 들어올 때마다 Key 값에 따라 자동 정렬 됨
- Comparator 사용
LinkedHashMap
- HashMap + 추가 옵션
- 입력순서를 보장한다.
- 예를 들어, HashMap에 A B C 라는 순서로 입력했을 때, 맵에 있는 모든 값을 출력할때 A B C 라는 순서로 출력한다는 보장이 없다.
- LinkedHashMap은 이러한 입력 순서를 보장한다.
MultiValueMap
Spring에서 제공하는 Data Collection
Spring 라이브러리 (Package org.springframework.util)
Key 의 중복이 허용된다.
MultiValueMap<String,Integer> map = new LinkedMultiValueMap<>();
map.add("A",123);
map.add("A",1234);
map.add("A",12345);
List<Integer> result = map.get("A");
for(int value : result){
System.out.println(value);
}
결과
123
1234
12345
|
하나의 키에 여러 값을 저장하기 위해서는 키에 List를 저장하면 되지만, 그 형태가 복잡해질 수 있다.
RestTemplate
- application/x-www-form-urlencoded 타입으로 POST 요청을 하기 위해서는 객체를 MultiValueMap으로 전송해야 한다.
- exchange(), getForEntity(), postForEntity() 등 MultiValueMap 필수 사용
- 같은 Key를 가진 파라미터 값이 여러 개일 경우를 대비해서 !
- 동일한 Key값을 가진 여러 파라미터가 있을 경우도 웹은 이를 정상적으로 인식할 수 있으며, 수신하는 곳에서는 name을 List로 가진 곳에 정상적으로 매핑되기 때문
언제 사용?
- Map을 사용하고 싶을 때
- 중복된 키로 들어오는 value를 저장하고 싶을 때
- RestTemplate
참고
728x90
'Computer Science > JAVA' 카테고리의 다른 글
[JAVA] JVM 메모리 구조와 가비지 컬렉션 #2 (0) | 2022.01.23 |
---|---|
[JAVA] JVM 메모리 구조와 가비지 컬렉션 #1 (1) | 2022.01.16 |