728x90
반응형
Java의 자료구조 - Map의 개념, 활용, 예제 정리
1. Map 이란?
- Map은 리스트나 배열처럼 순차적으로 요소의 값을 구하는 것이 아닌 key를 통해 value(값)를 얻는다.
Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다.
Map은 키(key)와 값(value)을 하나의 쌍으로 저장하는 방식(ket-value방식)을 사용한다.
2. Map의 특징
1. 저장 순서를 유지하지 않는다.
2. 키는 중복을 허용하지 않는다. (값의 중복은 허용)
3. Map 활용
put
// 1 <String, String>
Map<String, String> map1 = new HashMap<String, String>();
map1.put("watch", "시계");
map1.put("whale", "고래");
map1.put("blog", "블로그");
// 2 <String, Integer>
Map<String, Integer> map2 = new HashMap<String, Integer>();
map2.put("one", 1);
map2.put("two", 2);
map2.put("three", 3);
// 3 <String, List<String>>
Map<String, List<String>> map3 = new HashMap<>();
List<String> numList = new ArrayList<String>();
numList.add("one");
numList.add("two");
numList.add("three");
map3.put("number", numList);
get
List<String> numList = map3.get("number");
System.out.println(numList);
containsKey
// containsKey 메소드는 해당 Key가 있으면 true, 없으면 false를 리턴한다.
map1.containsKey("watch");
remove
// remove 메소드는 해당 key값에 해당하는 아이템을 삭제한 후 해당 key의 value값을 리턴한다.
map1.remove("apple");
5. Map 예제
[예제 1]
Map<String, String> map = new HashMap<String, String>();
map.put("watch", "몰라");
map.put("whale", "몰라");
map.put("blog", "몰라");
map.put("apple", "몰라");
map.put("watch", "시계");
map.put("whale", "고래");
map.put("blog", "블로그");
for(String key : map.keySet()) {
System.out.println("key : " + key + ", value : " + map.get(key));
}
위 결과를 보면 순서 상관없이 출력되는 것을 알 수 있으며, 이미 존재하는 key값에 중복으로 put해도 2번출력되지 않는다.
Key값이 이미 존재하는 경우 Value값을 갱신한다.
[예제 2]
// 3 <String, List<String>>
Map<String, List<String>> map3 = new HashMap<>();
List<String> numList = new ArrayList<String>();
numList.add("one");
numList.add("two");
numList.add("three");
map3.put("number", numList);
if(map3.containsKey("number")) {
numList = new ArrayList<String>();
numList = map3.get("number");
for(String num : numList) {
System.out.println(num);
}
}
728x90
반응형
'Programming > Java' 카테고리의 다른 글
[Java] 스트림(Stream) 사용 시 주의사항 (재사용, 지역변수 접근, 무한 스트림) (0) | 2023.03.13 |
---|---|
[Java] 약수의 개수 구하는 최적의 방법(알고리즘) (0) | 2022.11.20 |
[Java] List 중복제거 - Set, Stream 활용 (0) | 2022.09.10 |
[Java] 스트림(Stream) 개념 및 사용법 / filter, map / iterator 비교 (0) | 2022.06.19 |
[Java] BigDecimal 사용법 및 예제 - 연산, 형변환, 비교 (0) | 2022.06.12 |