쉽게 쉽게

[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] break, contiune문 사용법  (0) 2024.11.24
    [Java] 소수 구하기  (2) 2024.09.26
    [Java] 최대공약수, 최소공배수 구하기  (0) 2024.09.20
    [Java] 약수의 개수 구하기  (0) 2024.09.15
    [Java] FILE 업로드(다중)  (0) 2024.04.28