Just Do It

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

핫도구

활동하기