728x90
반응형
오늘은 Map이라는 인터페이스에 대해서 설명하는 글을 써보도록 하겠습니다. 제가 여태까지 알고리즘을 풀며, 가장(?) 재밌게 그리고 자주 풀어봤다고 느낀 것이 바로 map을 활용한 문제였던 것 같습니다. 하지만 정작 자세한 내용을 알지는 않고 두루뭉술하게 알고 있다고 생각해서 공부하게 되었습니다. 그러면 바로 글 시작해보도록 하겠습니다.
Map이란?
- 자바 컬렉션 프레임워크에서 제공하는 인터페이스.
- "키 - 값" 쌍으로 데이터를 관리하는 자료구조를 표현.
- 대표적인 구현체 : HashMap, TreeMap, LinkedHashMap etc
주요 특징
- Key - Value : Map은 각 요소가 하나의 키와 그에 대응하는 값으로 구성. Key는 중복될 수 없으며(unique), Value는 중복될 수 있음.
- 인터페이스 : Map 인터페이스는 다양한 구현체들을 위한 메소드들 정의함. 구현체들은 Map 인터페이스의 메소드를 구현하여 서로 다른 특성과 성능을 가질 수 있음.
주요 메소드
- put(key, value) : 지정된 키와 값으로 맵에 요소를 추가하거나, 기존의 값을 갱신.
- get(key) : 지정된 키에 맵핑된 값을 반환.
- remove(key) : 지정된 키와 그에 대응하는 값을 맵에서 제거.
- containsKey(key) : 맵에 지정된 키가 포함되어 있는지 확인.
- containsValue(value) : 맵에 지정된 값이 하나 이상 포함되어 있는지 확인.
- keySet() : 맵에 포함된 모든 키를 반환하는 set을 반환.
- entrySet() : 맵에 포함된 모든 키 - 값 쌍을 나타내는 Set<Map.Entry<K, V>>을 반환.
활용 예제
- 다음 코드에서는 과일과 각각의 과일 가격을 넣어주었습니다. 그리고 이미 존재하는 Key 값에 Value만 다르게 해서 다시 넣어보았습니다. "사과"를 2번 넣었지만, 2번 출력되는 것이 아닌 중복을 제거하여 한번만 출력되며 기존의 Value값을 새로 갱신해주는 것을 알 수 있습니다.
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("사과", 10000);
map.put("포도", 12000);
map.put("딸기", 13000);
map.put("사과", 18000);
for (String key : map.keySet()){
System.out.println(key + " : " + map.get(key));
}
// 포도 : 12000
// 사과 : 18000 ----> 결과값
// 딸기 : 13000
}
}
- 다음 코드에서는 "사과"를 첫번째로 , 두번째로 "포도", 마지막으로 "딸기"를 넣어주었고, 순서를 기억하려고 Value 값에 각각 1,2,3을 넣어주었습니다. 하지만 출력해본 결과, 순서는 보장되지 않았습니다.
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("사과", 1);
map.put("포도", 2);
map.put("딸기", 3);
for (String key : map.keySet()){
System.out.println(key + " : " + map.get(key));
}
// 포도 : 2
// 사과 : 1 ---> 결과값
// 딸기 : 3
}
}
결론
이렇게 다양한 구현체와 메소드들이 존재하는 것을 알 수 있습니다. 또한, 그 다양한 만큼 서로 다른 특성과 성능을 가질 수 있게끔 구현도 가능합니다. 따라서 키 - 값의 구조를 활용하여 데이터를 효율적으로 관리할 수 있는 도구로 사용가능합니다.
728x90
반응형
'자료구조' 카테고리의 다른 글
Comparable VS Comparator 의 이해 (0) | 2024.06.30 |
---|---|
ConcurrentHashMap VS ConcurrentSkipListMap 이란? (0) | 2024.06.19 |
AuthProvider VS Provider 이란? (0) | 2024.06.19 |
HashSet이란? (0) | 2024.06.17 |
HashMap이란? (0) | 2024.06.17 |