티스토리 뷰

Java

Java(Map 인터페이스)

yoooon1212 2024. 5. 19. 18:52

Map은 키(key)와 값(value)을 연관시키는 자료구조입니다. 이는 사전과 유사한 구조로, 각 키는 고유한 값을 가집니다. Java에서 Map은 인터페이스로 정의되어 있으며, 이를 구현한 여러 가지 클래스가 있습니다.

Map 주요 특징

  1. 키-값 저장: Map은 키(key)와 값(value)의 쌍으로 데이터를 저장합니다. 각 키는 고유해야 하며, 하나의 값에만 매핑됩니다.
  2. 중복 키 불가: Map은 각 키가 고유해야 합니다. 따라서 동일한 키를 두 번 이상 추가할 수 없습니다. 키의 유일성은 Map 내에서 보장됩니다.
  3. 순서 보장하지 않음: Map은 키-값 쌍을 저장하는데 순서를 유지하지 않습니다. 따라서 Map에 저장된 순서와 데이터를 순회할 때의 순서는 일치하지 않을 수 있습니다.

 

Map 주요 기능 및 메서드

  1. 키-값 저장: Map은 키와 값의 쌍을 저장합니다.
    •  put(key, value)
      • 설명: 지정된 키와 값을 매핑하여 Map에 저장합니다.
      • 반환값: 이전에 키에 매핑되어 있던 값, 없으면 null을 반환합니다.
  2. 데이터 검색: 주어진 키를 사용하여 매핑된 값을 검색합니다.
    • get(key)
      • 설명: 지정된 키에 매핑되어 있는 값을 반환합니다.
      • 반환값: 지정된 키에 매핑되어 있는 값, 없으면 null을 반환합니다.
  3. 데이터 추가 및 갱신: 새로운 키-값 쌍을 추가하거나, 기존 키에 매핑된 값을 갱신합니다.
    • put(key, value)
      • 설명: 지정된 키와 값을 매핑하여 Map에 저장합니다. 이미 존재하는 키인 경우 해당 키에 새로운 값을 덮어씁니다.
      • 반환값: 이전에 키에 매핑되어 있던 값, 없으면 null을 반환합니다.
  4. 데이터 삭제: 특정 키에 해당하는 값을 삭제합니다.
    • remove(key)
      • 설명: 지정된 키에 매핑되어 있는 값을 제거합니다.
      • 반환값: 지정된 키에 매핑되어 있던 값, 없으면 null을 반환합니다.
  5. 크기 확인: Map의 크기(키-값 쌍의 수)를 확인합니다.
    • size()
      • 설명: Map에 포함된 키-값 쌍의 수를 반환합니다.
      • 반환값: Map에 포함된 키-값 쌍의 수를 반환합니다.

 

Collection
   |
   └── Map
        ├── HashMap
        ├── TreeMap
        └── LinkedHashMap
  • HashMap: 가장 일반적으로 사용되는 Map 구현체로, 해시 테이블을 사용하여 키-값 쌍을 저장합니다. 요소의 삽입과 조회가 빠르며, 순서를 보장하지 않습니다.
  • TreeMap: 탐색 트리에 데이터를 저장합니다.
  • LinkedHashMap: HashMap의 확장으로, 요소들이 추가된 순서를 유지합니다. 이는 내부적으로 LinkedList를 사용하여 요소의 순서를 기록합니다.

 

 

예시 코드)

keyset() : 키들의 집합을 반환한다.(모든 항목을 방문한다.)

 

 

 

Map의 모든 요소 방문하는 방법

Map은 Collection 인터페이스를 방문하지 않습니다. 그러므로 Map에 저장된 데이터를 꺼내는 코드는 다른 컬렉션과는 약간 다릅니다. 

 

1. for - each 구문과 keySet()을 사용하는 방법

for (String key : map.keyset()) {
	System.out.println("key=" + key + ", value=" + map.get(key));
}

 

변수 타입 추론을 사용할 수도 있다. 

for (var key : map.keyset()) {
	System.out.println("key=" + key + ", value=" + map.get(key));
}

 

 

2. 반복자를 사용하는 방법

Iterator<String> it = map.keySet().iterator();
while (it.hasNext()) {
	String key = it.next();
	System.out.println("key=" + key + ", value=" + map.get(key));
}

 

 

3. Stream 라이브러리를 사용하는 방법

위 코드에서 각 요소에 대하여 반복하는 부분을 람다식으로 교체한다면 아래와 같이 작성할 수 있습니다.

map.forEach((key, value) -> {
	System.out.println("key=" + key + ", value=" + map.get(key));
});

 

'Java' 카테고리의 다른 글

Java(Tread에 wait와 notify(프로듀서와 컨슈머패턴))  (0) 2024.05.19
Java(Queue)  (0) 2024.05.19
Java(Set 인터페이스)  (0) 2024.05.19
Java(List 인터페이스 및 제네릭)  (0) 2024.05.19
Java(Stack)  (0) 2024.05.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함