안녕하세요 코이킹입니다.
이번 포스트에서는 맵에 대해서 설명해 보겠습니다.
1. 맵(Map)이란?
맵은 Key-Value구조로 구성된 데이터를 저장하는 자료구조입니다.
Key를 사용한 데이터 검색에 최적화된 자료구조이며, Key값은 중복될 수 없다는 특징이 있습니다.
맵을 구현한 것으로는 HashMap, LinkedHashMap, TreeMap 등이 있습니다.
2. HashMap
1) HashMap이란?
해시맵 이란 해시 테이블을 사용하여 맵을 구현한 자료구조로,
Key값을 해시함수를 통해 데이터의 참조값이 저장된 버켓(bucket)의 인덱스로 변환하여, 버켓의 인덱스 값을 찾고,
버켓의 인덱스값을 통해 데이터에 접근합니다.
※ 장점
- Key값으로 데이터를 검색하므로 검색속도가 빠릅니다.
※ 단점
- 버켓의 크기 조정이 필요할 경우, 처리속도 지연이 발생할 수 있습니다.
- 데이터 저장 시 배열이나 리스트보다 더 많은 메모리를 사용합니다.
- Key값이 정렬되어 있지 않습니다.
※ 사용하는 곳
- 유니크한 Key값을 이용한 데이터의 활용이 필요한 경우
- 데이터의 입력과 삭제가 빈번할 경우
2) 데이터 삽입
put메서드를 사용하여 데이터를 넣을 수 있습니다.
put메서드의 매개변수로 Key값과, Value(저장할 데이터)를 설정하여 데이터를 저장합니다.
Map<String, String> map = new HashMap<String, String>();
map.put("HashMap-key-01", "HashMap-value-01");
map.put("HashMap-key-02", "HashMap-value-02");
map.put("HashMap-key-03", "HashMap-value-03");
map.put("HashMap-key-04", "HashMap-value-04");
map.put("HashMap-key-05", "HashMap-value-05");
3) 데이터 출력
- get메서드와 Key값을 사용
System.out.println(map.get("HashMap-key-02"));
- 전체 데이터 출력 (keySet메서드 사용)
for (String key : map.keySet()) {
System.out.println(String.format("Using keySet key : [%s], value : [%s]", key, map.get(key)));
}
- 전체 데이터 출력 (key값의 Iterator사용)
Iterator<String> keys = map.keySet().iterator();
while(keys.hasNext()) {
String key = keys.next();
System.out.println(String.format("Using Iterator key : [%s], value : [%s]", key, map.get(key)));
}
- 전체 데이터 출력 (entrySet메서드 사용)
for (Map.Entry<String, String> obj : map.entrySet()) {
System.out.println(String.format("Using entrySet key : [%s], value : [%s]", obj.getKey(), obj.getValue()));
}
4) 데이터 갱신
- put메서드 사용 ※ 같은 키를 사용해서 데이터를 넣으면 덮어쓰기가 되면서 갱신이 일어남
map.put("HashMap-key-02", "HashMap-value-02_updated");
- replace메서드 사용
map.replace("HashMap-key-02", "HashMap-value-02_updated_new");
5) 데이터 삭제
- remove메서드와 Key값을 사용
map.remove("HashMap-key-02");
- 모든 데이터 삭제하기
map.clear();
3. LinkedHashMap
1) LinkedHashMap이란?
링크드 해시 맵은 해시 맵을 상속받아 구현된 자료구조로 Key값의 순서를 보존하므로, Key를 순차적으로 정렬해야 할 필요가 있다면 사용합니다..
※ 데이터 삽입, 출력, 갱신, 삭제 기능은 HashMap의 메서드를 그대로 사용할 수 있으므로 생략
4. TreeMap
1) TreeMap이란?
트리 맵은 트리구조기반으로 구현된 맵이다.
※ 장점
- 메모리 사용량이 HashMap에 비해 적습니다.
- 데이터의 Key값이 정렬되어 있습니다.
※ 단점
- 데이터의 입력・삭제 시 HashMap보다 처리속도가 느립니다. (Tree의 Node 재배치가 일어날 수 있으므로)
※ 데이터 삽입, 출력, 갱신, 삭제 기능은 HashMap의 메서드를 그대로 사용할 수 있으므로 생략
※ 예제코드
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/basic/B_12_Map.java
※ qiita에 투고한 URL
'프로그래밍 > Java-문법정리' 카테고리의 다른 글
【Java문법】예외처리 (0) | 2022.01.10 |
---|---|
【Java문법】셋(Set) (0) | 2022.01.10 |
【Java문법】리스트(List) (0) | 2022.01.10 |
【Java문법】래퍼클래스 (0) | 2022.01.10 |
【Java문법】표준입출력 (0) | 2022.01.09 |
댓글