HashMap keySet, values(), entrySet 연습

BuZZLightyear·2023년 3월 7일
0

정리

목록 보기
32/47

문제


import java.util.*;

public class Solution { 
  public int addOddValues(HashMap<Character, Integer> hashMap) {

    }
 } 

KeySet, values(), entrySet 이렇게 3가지 방법을 이용해 풀어 보겠다.
hashMap은 iterator를 사용하려면 Set을 이용해야한다.

keySet 이용
        int sum = 0;
            Set<Character> keySet = hashMap.keySet();
        Iterator<Character> it = keySet.iterator();
        while (it.hasNext()) {
            int num = hashMap.get(it.next()); 
            if(num % 2 == 0) sum += num;
        }
        return sum;

keySet 이용시 it.next가 hashmap의 key를 가르키므로 hashMap.get(it.next)로 값을 가져올 수 있다.

values 이용
        int sum = 0;
        Collection<Integer> values = hashMap.values();
        Iterator<Integer> it = values.iterator();

        while(it.hasNext()){
        int num = it.next();
        if(num % 2 == 0) sum += num;
        }
        return sum;

values는 value값을 저장하고 있기 때문에 it.next에 이미 velue값이 들어가 있다.

entrySet 이용
       int sum = 0;
       Set<Map.Entry<Character, Integer>> entrySet = hashMap.entrySet();
       Iterator<Map.Entry<Character, Integer>> it = entrySet.iterator();

       while(it.hasNext()){
           int num = it.next().getValue();
           if(num % 2 == 0) sum += num;
       }
       return sum;

Iterator를 쓰기위해 Set으로 변형하는데 이때 Set의 요소가 entry 객체 이고 이 요소들의 타입이 entry타입이다. 그런데 entry인터페이스는 map의 내부 인터페이스이기 때문에 map.entry로 접근하고 entry의 키값과 벨류값도 선언한다.
it.next()가 가르키는게 entry객체이므로 velue값을 가져오려면 getValue()를 사용하면되고
key값을 가져오려면 getKey()를 사용한다.

profile
버즈라이트이어

0개의 댓글