Collection_4_Map
by 핫도구반응형
Map
Map의 특징
1. key와 value 쌍으로 데이터를 저장
- key는 unieque하며 하나의 value에 매칭된다.
- value는 중복되어 저장할 수 있다.
2. key값을 통해 빠르게 데이터에 접근할 수 있다.
HashMap
HashMap의 특징
1. 중복된 key 허용하지 않음
2. 순서를 보장하지 않음
3. 해시테이블을 사용해 빠르게 조회 가능
4. 하나의 null의 key값과 여러개의 value값이 가능하다.
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
System.out.println(map); // {banana=2, apple=1, cherry=3}
System.out.println("banana = " +map.get("banana")); // banana = 2
System.out.println("banana 존재 여부 : "+map.containsKey("banana")); // banana 존재 여부 : true
System.out.println("value 2 존재 여부 : "+map.containsValue(2)); // value 2 존재 여부 : true
LinkedHashMap
LinkedHashMap의 특징
1. 중복된 key 허용하지 않음
2. 순서를 보장함
3. 하나의 null의 key값과 여러 개의 value 값이 가능하다.
Map<String, Integer> map = new LinkedHashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
System.out.println(map); // {apple=1, banana=2, cherry=3}
System.out.println("banana = " +map.get("banana")); // banana = 2
Map<String, Integer> maps = new LinkedHashMap<>(16, 0.75f,true);
maps.put("apple", 1);
maps.put("banana", 2);
maps.put("cherry", 3);
System.out.println(maps); // {apple=1, banana=2, cherry=3}
maps.get("apple");
System.out.println(maps); // {banana=2, cherry=3, apple=1}
LinkedHashMap<>(a, b, c)에서 a 는 초기 용량, b는 로드 팩터, c는 액세스 순서이다.
초기용량은 해시 테이블의 크기의 용량을 이야기하며 로드팩터는 해시테이블의 크기에서 얼마나 차야 크기가 증가하는지에 대한 비율을 의미하며 액세스 순서는 true면 get()혹은 put() 메서드로 접근될 떄마다 가장 뒤로 이동시킨다.
| 특징 | HashMap | LinkedHashMap |
| 순서보장유무 | 순서보장하지 않음 | 순서보장함 |
| 성능 | 아주빠름 | 빠름 |
| 메모리사용 | 상대적으로 적음 | 상대적으로 많음 |
| 용도 | 순서보다 속도가 우선인 경우 | 속도보다 순서가 우선인 경우 |
TreeMap
TreeMap의 특징
1. 중복된 key를 허용하지 않음
2. 정렬된 순서를 유지한다.
3. null의 key값을 허용하지 않지만 여러 개의 value 값이 가능하다.
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("apple", 1);
treeMap.put("cheerry", 3);
treeMap.put("banana", 2);
System.out.println(treeMap); // {apple=1, banana=2, cheerry=3}
for (Map.Entry<String, Integer> tree : treeMap.entrySet()) {
System.out.print(tree.getKey() +" : "+tree.getValue()+"/"); // apple : 1/banana : 2/cheerry : 3/
}
여기에서 이전에 나오지 않았던 Map.Entry 인터페이스는 Map에 저장되어 있는 key와 value를 하나의 객체로 다루기 위해 사용된다. 이를 활용해 getKey(), getValue(), setValue(V value)와 같은 다양한 메서드를 사용할 수 있다. 또한 entrySet()은 map에 저장된 항목을 Set<Map.Entry<>>로 변환시키는 메서드로 이 두가지를 활용해 Key와 Value를 함께 다룰 수 있다.
이렇게 Map의 3가지 종류에 대해 알아봤으며 HahMap은 순서 상관없이 빠른 조회를 필요로 할 때 사용하며 LinkedHashMap은 삽입 순서를 유지할 때 사용하며 TreeMap은 데이터가 정렬된 순서로 저장되거나 범위를 검색할 떄 사용된다.는 것을 알아봤으며 각각의 기본적인 메서드 및 특징에 대해 알아봤다.
반응형
'JAVA > OLD' 카테고리의 다른 글
| Collection_3_Set (0) | 2025.02.25 |
|---|---|
| Collection_2_List (0) | 2025.02.11 |
| Collection_1 (0) | 2025.02.02 |
| JSTL LOOP(forEach) (0) | 2024.08.19 |
| JSTL_if, choose(조건분기) (0) | 2024.08.19 |
블로그의 정보
AquaMan
핫도구