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개의 댓글

관련 채용 정보