쉽게 쉽게

[Java] Map 메서드 활용법 본문

개발공부/Java

[Java] Map 메서드 활용법

곱마2 2024. 11. 19. 09:07
반응형

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

 

https://junghn.tistory.com/entry/JAVA-Map-getOrDefault-%EC%9D%B4%EB%9E%80-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%B0%8F-%EC%98%88%EC%A0%9C

 

[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

잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다.

 

반응형

'개발공부 > Java' 카테고리의 다른 글

[Java] 정규표현식(regex) 정리  (1) 2024.12.08
[Java] break, contiune문 사용법  (0) 2024.11.24
[Java] 소수 구하기  (2) 2024.09.26
[Java] 최대공약수, 최소공배수 구하기  (0) 2024.09.20
[Java] 약수의 개수 구하기  (0) 2024.09.15

곱마2님의
글이 좋았다면 응원을 보내주세요!