Map 인터페이스는 Java Collection Framework의 일부이며 각 키가 고유하고 해당 값을 검색하는 데 사용할 수 있는 키-값 쌍을 저장하는 데이터 구조입니다. Map 인터페이스의 사용방법 중 일부는 다음과 같습니다.
- put(key, value): 맵에 새 키-값 쌍을 추가하거나 기존 키와 연결된 값을 업데이트합니다.
- get(key): 주어진 키와 관련된 값을 검색합니다.
- remove(key): 맵에서 지정된 키를 가진 키-값 쌍을 제거합니다.
- containsKey(key): 맵에 지정된 키가 있는 키-값 쌍이 포함되어 있으면 true를 반환합니다.
- isEmpty(): 맵이 비어 있으면 true를 반환합니다. 즉, 키-값 쌍이 포함되어 있지 않습니다.
- size(): 맵에서 키-값 쌍의 수를 반환합니다.
- keySet(): 맵에 있는 모든 키의 집합을 반환합니다.
- values(): 지도에 있는 모든 값의 컬렉션을 반환합니다.
- entrySet(): 맵에 있는 모든 키-값 쌍의 집합을 반환합니다. 여기서 각 키-값 쌍은 Map.Entry 개체로 표시됩니다.
- clear(): 맵에서 모든 키-값 쌍을 제거합니다.
Map 인터페이스는 HashMap, TreeMap, LinkedHashMap 등 각각 고유한 장단점이 있는 몇 가지 구체적인 클래스로 구현됩니다.
HashMap
Java의 HashMap 클래스는 Map 인터페이스의 구체적인 구현이며 키-값 쌍을 저장하기 위한 해시 테이블 데이터 구조를 제공합니다. HashMap의 주요 기능 중 일부는 다음과 같습니다.
- 해시 테이블을 사용하여 키-값 쌍을 저장하므로 요소의 빠른 조회, 삽입 및 삭제를 위한 효율적인 데이터 구조가 됩니다.
- 요소의 순서를 유지하지 않으므로 요소가 삽입되거나 검색되는 순서가 동일하지 않을 수 있습니다.
- null 값과 null 키를 허용하므로 유연한 데이터 구조가 됩니다.
- 스레드로부터 안전하지 않습니다. 즉, 적절한 동기화 없이는 여러 스레드가 동시에 맵에 액세스 할 수 없습니다.
- get 및 put의 기본 작업에 대해 일정한 시간 O(1) 평균 시간 복잡도를 제공합니다.
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// Adding key-value pairs to the map
map.put("John", 30);
map.put("Jane", 25);
map.put("Jim", 35);
// Retrieving values from the map
System.out.println("Jane's age: " + map.get("Jane"));
// Iterating over the elements in the map
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
이 예제에서는 문자열 키와 정수 값의 HashMap 맵을 만듭니다. 세 개의 키-값 쌍을 맵에 추가하고 "Jane" 키와 연결된 값을 검색합니다. 마지막으로 entrySet() 메서드를 사용하여 맵의 요소를 반복하고 키와 값을 출력합니다.
HashMap은 요소의 순서를 유지하지 않기 때문에 요소가 인쇄되는 순서는 삽입된 순서와 다를 수 있습니다.
TreeMap
TreeMap 클래스는 Map 인터페이스의 구체적인 구현이며 키-값 쌍을 저장하기 위한 정렬된 맵 데이터 구조를 제공합니다. TreeMap의 요소는 키를 기준으로 오름차순으로 저장되므로 요소의 순서가 중요한 상황에 유용합니다. TreeMap의 주요 기능 중 일부는 다음과 같습니다.
TreeMap은 Red-Black Tree 데이터 구조를 사용하여 키-값 쌍을 저장하므로 요소 검색, 삽입 및 삭제를 위한 효율적인 데이터 구조가 됩니다.
- 기본적으로 오름차순으로 저장되는 키를 기반으로 요소의 순서를 유지합니다.
- null 값을 허용하지 않지만 단일 null 키는 허용합니다.
- 스레드로부터 안전하지 않습니다. 즉, 적절한 동기화 없이는 여러 스레드가 동시에 맵에 액세스할 수 없습니다.
- get 및 put의 기본 작업에 대수 시간 복잡도 O(log n)을 제공합니다.
import java.util.Map;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<>();
// Adding key-value pairs to the map
map.put("John", 30);
map.put("Jane", 25);
map.put("Jim", 35);
// Retrieving values from the map
System.out.println("Jane's age: " + map.get("Jane"));
// Iterating over the elements in the map
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
// Output:
// Jane's age: 25
// Jim: 35
// John: 30
이 예제에서는 문자열 키와 정수 값의 TreeMap 맵을 만듭니다. 세 개의 키-값 쌍을 맵에 추가하고 "Jane" 키와 연결된 값을 검색합니다. 마지막으로 entrySet() 메서드를 사용하여 맵의 요소를 반복하고 키와 값을 출력합니다.
LinkedHashMap
LinkedHashMap 클래스는 Map 인터페이스의 구체적인 구현이며 키-값 쌍을 저장하기 위해 연결된 목록 구현과 함께 해시 테이블 데이터 구조를 제공합니다. LinkedHashMap은 HashMap을 확장하고 요소의 순서를 유지하므로 요소가 삽입되거나 검색되는 순서가 동일합니다. LinkedHashMap의 주요 기능 중 일부는 다음과 같습니다.
LinkedHashMap은 연결 목록 구현이 있는 해시 테이블을 사용하여 키-값 쌍을 저장하므로 요소의 빠른 조회, 삽입 및 삭제를 위한 효율적인 데이터 구조가 됩니다.
- 요소의 순서를 유지하므로 요소가 삽입되거나 검색되는 순서는 동일합니다.
- null 값과 null 키를 허용하므로 유연한 데이터 구조가 됩니다.
- 스레드로부터 안전하지 않습니다. 즉, 적절한 동기화 없이 여러 스레드가 동시에 맵에 액세스할 수 없습니다.
- get 및 put의 기본 작업에 대해 일정한 시간 O(1) 평균 시간 복잡도를 제공합니다.
import java.util.LinkedHashMap;
import java.util.Map;
public class LinkedHashMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>();
// Adding key-value pairs to the map
map.put("John", 30);
map.put("Jane", 25);
map.put("Jim", 35);
// Retrieving values from the map
System.out.println("Jane's age: " + map.get("Jane"));
// Iterating over the elements in the map
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
// Output:
// Jane's age: 25
// John: 30
// Jim: 35
이 예제에서는 문자열 키와 정수 값의 LinkedHashMap 맵을 만듭니다. 세 개의 키-값 쌍을 맵에 추가하고 "Jane" 키와 연결된 값을 검색합니다. 마지막으로 entrySet() 메서드를 사용하여 맵의 요소를 반복하고 키와 값을 출력합니다.
다음은 Java Collection의 Set 인터페이스에 대해 알아보겠습니다.
https://chunstory.tistory.com/11
Java Collection(HashSet, TreeSet, LinkedHashSet)
Java의 Set은 고유한 요소의 모음이며 중복을 허용하지 않습니다. Set은 HashSet, TreeSet 및 LinkedHashSet을 포함하여 Java의 여러 클래스에 의해 구현됩니다. Set 인터페이스의 일부 메서드는 다음과 같습
chunstory.tistory.com
https://chunstory.tistory.com/9
Java Collection(ArrayList, LinkedList, Vector)
Java에서 java.util.List 인터페이스는 Java Collection Framework의 일부이며 정렬된 요소 모음을 나타냅니다. 목록은 중복을 허용하고 조작할 수 있는 정의된 순서를 가집니다. 요소는 인덱스로 액세스할
chunstory.tistory.com
'프로그래밍 > Java' 카테고리의 다른 글
Java Stream(parallelStream) (0) | 2023.02.08 |
---|---|
Java Stream(map, filter, redute, sorted, collect) (0) | 2023.02.07 |
Java Collection(HashSet, TreeSet, LinkedHashSet) (0) | 2023.02.06 |
Java Collection(ArrayList, LinkedList, Vector) (0) | 2023.02.06 |
Java 비동기 프로그래밍 (0) | 2023.02.06 |