[Java] Map 메서드 활용법
▤ 목차
Map에서 활용할 수 있는 메서드와 키(key)와 값(value)을 사용하는 방법에 대해 공부하며 작성했다.
1. Map의 추가 메서드 활용
보통은 아래처럼 map을 선언하고 값을 넣어준다.
HashMap<Integer ,String> map = new HashMap<>();
map.put(1,"AAA");
map.put(2,"BBB");
map.put(3,"CCC");
map.put(4,"DDD");
map.get(1); //AAA
map.get(2); //BBB
map.get(3); //CCC
map.get(4); //DDD
하지만 map에 동일 키 값을 추가할 경우 value의 값이 덮어쓰기가 되는데 이를 원치 않는다면 getOrDefault 메서드를 사용할 수 있다.
1. getOrDefault
getOrDefault(Object key, V DefaultValue)
- key : 값을 가져와야 하는 요소의 키
- defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
- 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값을 반환
덮어쓰기 방지
//5의 값이 없을때는 "EEE"를 추가
map.put(5, map.getOrDefault(5, "EEE"));
map.get(5) //EEE
//5에 다른 값을 추가하려고 해도
//이미 5의 값이 있기때문에 "EEE"가 추가됨
map.put(5, map.getOrDefault(5, "ZZZ"));
map.get(5) //EEE
좀 더 활용해보자면 동일한 key값이 몇 개인지 카운트하는 방식으로도 사용할 수 있다.
동일한 key 개수 카운트
String [] alphabet = { "A", "B", "C" ,"A", "B", "B"};
HashMap<String, Integer> map = new HashMap<>();
for(String key : alphabet){
map.put(key, map.getOrDefault(key, 0) + 1);
}
System.out.println("결과 : " + map); // 결과 : {A=2, B=3, C=1}
2. putIfAbsent
default V putIfAbsent(K key, V value)
- key - 지정된 값이 연관될 키
- value - 지정된 키와 연결될 값
- key 값이 존재하는 경우 > Map의 value 값을 반환
- key 값이 존재하지 않는 경우 > key와 value를 Map에 저장하고 null을 반환
- key 값이 존재하지 않는 경우 > value의 값의 null인 경우 value에 값을 넣어줌
덮어쓰기를 방지하는 또 다른 방법은 putIfAbsent를 사용하면 된다.
map.put(1,"AAA");
map.put(2,"BBB");
map.put(3,"CCC");
map.put(4,"DDD");
map.put(5, null);
//키값이 존재하기 때문에 "AAA" 값 유지
map.putIfAbsent(1, "ZZZ");
//키값이 존재하지만 value가 null이기에 값 넣어줌
map.putIfAbsent(5, "ZZZ");
//키값이 존재하지않기때문에 키와 값 추가
map.putIfAbsent(6, "XXX");
System.out.println("result : " + map); //result : {1=AAA, 2=BBB, 3=CCC, 4=DDD, 5=ZZZ, 6=XXX}
2. Map의 확인 메서드 활용
HashMap<Integer ,String> map = new HashMap<>();
map.put(1,"AAA");
map.put(2,"BBB");
map.put(3,"CCC");
map.put(4,"DDD");
1. keySet()
모든 KEY값 가져오기
// 방법1
// Iterator 사용 1 - keySet()
Iterator<String> keys = map.keySet().iterator();
while (keys.hasNext()){
String key = keys.next();
System.out.println("KEY : " + key); // 1, 2, 3, 4
}
// Iterator 사용 2 - keySet()
Set set = map.keySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()){
String key = (String) iterator.next();
System.out.println("KEY : " + key); // 1, 2, 3, 4
}
//방법 2 - keySet() : key
for(String key : map.keySet()){
System.out.println("키 : " + key);
}
2. values()
모든 값 가져오기
Collection<String> col = map.values();
System.out.println(col); //AAA, BBB, CCC, DDD
for(String key : col){
System.out.println(key);
}
3. entrySet()
키와 값 모두 가져오기
//방법1
// Iterator 사용 - entrySet() : key / value
Set set = map.entrySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()){
Entry<String,Integer> entry = (Entry)iterator.next();
String key = (String)entry.getKey();
int value = (Integer)entry.getValue();
System.out.println("Key : " + key);
System.out.println("Value : " + value);
}
//방법2
// entrySet() : key / value
for(Entry<String, Integer> s : map.entrySet()){
System.out.println("키 : " + s.getKey() + "값 : " + s.getValue());
}
4. containsKey()와 containsValue()
map에 키와 값이 존재하는지 확인
boolean result = map.containsKey(key);
System.out.println(result); //true or false
boolean result2 = map.containsValue(value);
System.out.println(result2); //true or false
[JAVA] Map - getOrDefault 이란? 사용법 및 예제
getOrDefault - 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드 사용 방법 getOrDefault(Object key, V DefaultValue) 매개 변수 : 이 메서드는 두 개의 매개 변수를 허용합니
junghn.tistory.com
https://mine-it-record.tistory.com/233
[JAVA] 자바_HashMap key값 가져오기 ( feat. Iterator / keySet / entrySet )
- HashMap에서 Key값 뽑아내기 (ft. Value값) - key 값을 뽑아내는 방법에 대해 기록해두고자 한다. 예제 1) Map Key 값 가져오기 package test.my.only; import java.util.HashMap; import java.util.Iterator; import java.util.Map; imp
mine-it-record.tistory.com
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
