Map(HashMap, Hashtable, TreeMap)
1. Map이란?
자바(Java)에서 Map은 키-값 쌍의 집합을 나타내는 인터페이스이다.
각 키는 유일하며, 각 키에 대응하는 값이 존재하며, Map은 많은 유용한 메서드를 제공하여 키와 값의 쌍을 추가, 제거, 검색하는 등의 작업을 수행할 수 있다.
Map 인터페이스의 주요 구현체로는 HashMap, TreeMap, LinkedHashMap 등이 있다.
2. Map 종류와 사용 예시
- HashMap: 가장 일반적으로 사용되는 구현체이다.
해시 함수를 사용하여 키-값 쌍을 저장하므로 매우 빠른 검색 속도를 제공하지만, 순서가 유지되지 않는다.
Map<String, Integer> hashMap = new HashMap<>();
- TreeMap: 이진 검색 트리를 기반으로 한 구현체이다.
키의 순서를 유지하기 때문에 정렬된 상태로 데이터를 유지할 수 있다.
Map<String, Integer> treeMap = new TreeMap<>();
- LinkedHashMap: 해시 맵과 연결 리스트를 결합한 구현체로, 삽입 순서를 기억한다.
삽입 순서를 유지하면서 해시 맵의 기능을 사용할 수 있다.
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
선언 방법은 이렇게 되지만, 익숙해지려면 실제 사용해보는게 제일 빠른 것 같다..
3. Map의 주요 메서드
Map 인터페이스의 주로 사용되는 메서드이다.
put(key, value) | 특정 키에 값을 매핑하여 맵에 추가 |
get(key) | 지정된 키에 해당하는 값을 반환 |
remove(key) | 특정 키에 해당하는 매핑을 제거 |
containsKey(key) | 맵이 지정된 키를 포함하는지 여부를 확인 |
containsValue(value) | 맵이 지정된 값과 매핑된 키를 포함하는지 여부를 확인 |
size() | 맵에 포함된 키-값 쌍의 수를 반환 |
코드 예시
1. put()
Map<String, Integer> map = new HashMap<>();
// 값 추가
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
{One=1, Two=2, Three=3}
2. get()
Map<String, Integer> map = new HashMap<>();
// 값 추가
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
// 값 가져오기
int value = map.get("Two");
// 결과 출력
System.out.println("Value for key 'Two': " + value);
Value for key 'Two': 2
3. remove()
Map<String, Integer> map = new HashMap<>();
// 값 추가
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
map.remove("Three");
System.out.println(map);
{One=1, Two=2}
4. containsKey() / containsValue(value)
Map<String, Integer> map = new HashMap<>();
// 값 추가
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
// containsKey()를 사용하여 특정 키가 맵에 존재하는지 확인
String keyToCheck = "Three";
if (map.containsKey(keyToCheck)) {
System.out.println("Map contains key '" + keyToCheck + "'");
} else {
System.out.println("Map does not contain key '" + keyToCheck + "'");
}
// containsValue(value)를 사용하여 특정 값이 맵에 존재하는지 확인
int valueToCheck = 2;
if (map.containsValue(valueToCheck)) {
System.out.println("Map contains value " + valueToCheck);
} else {
System.out.println("Map does not contain value " + valueToCheck);
}
Map contains key 'Three'
Map contains value 2
5. size()
Map<String, Integer> map = new HashMap<>();
// 값 추가
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
// size()를 사용하여 맵의 크기 확인
int mapSize = map.size();
System.out.println("Map size: " + mapSize);
Map size: 3
4. JSON과 비교
키-값 쌍 구조를 사용한다는 말을 보자마자 JSON이 생각났다.
JSON과 Map 모두 데이터를 효과적으로 표현하기 위해 키-값 쌍을 사용한다. 각 항목은 특정 키에 대응하는 값을 가지고 있다. 차이점을 보자면..
- 용도 및 컨텍스트
- Map: 자바에서 데이터를 조직하고 다루기 위한 인터페이스로 사용
주로 프로그래밍 언어의 내부에서 데이터를 저장하고 검색하는 데 사용된다. - JSON: 데이터 교환을 위한 경량 형식으로, 주로 웹에서 데이터를 주고받는 데 사용된다. 언어에 독립적이므로 다양한 플랫폼 간에 데이터를 전송할 수 있다.
- Map: 자바에서 데이터를 조직하고 다루기 위한 인터페이스로 사용
- 표현방식
- Map: 주로 자바 언어에서 사용되며, 메모리 내에서 객체들을 효과적으로 저장하고 관리하는 데에 중점을 둔다.
- JSON: 주로 텍스트 형식으로 데이터를 표현하며, 자바스크립트 객체의 형식을 따르지만 언어에 독립적이다.
- 구현체와 메서드
- Map: 자바 컬렉션 프레임워크의 일부이며, HashMap, TreeMap, LinkedHashMap 등의 구현체를 제공한다.
put, get, size와 같은 메서드를 사용하여 데이터를 다룬다. - JSON: 다양한 언어에서 라이브러리를 통해 구현되며, 객체를 직렬화하고 역직렬화하는 메서드를 제공한다.
주로 JSON 데이터를 생성하고 읽는 데 사용한다.
- Map: 자바 컬렉션 프레임워크의 일부이며, HashMap, TreeMap, LinkedHashMap 등의 구현체를 제공한다.
- 표현 방식의 차이
- Map: 주로 자바 코드에서 사용되며, 객체를 생성하고 메서드를 호출하여 데이터를 다룬다.
- JSON: 주로 텍스트 형식이며, 키-값 쌍의 집합을 중괄호 {}로 감싸고, 배열을 대괄호 []로 감싸는 등의 문법을 사용하여 데이터를 표현한다.
결론, Map은 주로 자바 프로그래밍 언어에서 데이터를 다루는 데 사용되는 인터페이스이고, JSON은 데이터를 교환하기 위한 경량 형식으로 언어에 독립적이다.
쉽게 설명하자면, 어떤 화면에서 조회버튼을 누르면 쿼리가 돌며 데이터를 출력해 화면에 띄워준다.
"화면에서 조회 버튼을 누르면 시스템은 데이터를 가져오기 위해 쿼리를 실행하고, 이 결과를 JSON 형식으로 변환하여 화면에 전달한다. 이때, 데이터를 담는데에는 자바의 Map 구조를 사용하여 키-값 쌍으로 구성된 데이터를 JSON 형식으로 전달한다."
'Programming > Java' 카테고리의 다른 글
[Java] 스트림(Stream)이란? | 민민의 하드디스크 - 티스토리 (0) | 2024.02.05 |
---|---|
[Java] 스레드(Thread)란? (사용 이유, 사용법) | 민민의 하드디스크 - 티스토리 (0) | 2024.02.04 |
[Java] 제네릭(Generic)이란? | 민민의 하드디스크 - 티스토리 (2) | 2024.02.02 |
[Java - 자료구조] LinkedList와 ArrayList란? | 민민의 하드디스크 - 티스토리 (0) | 2024.02.02 |
[Java] 예외 처리(Exception handling)란? | 민민의 하드디스크 - 티스토리 (1) | 2024.02.01 |