[개발일지] 230516 Java Map.Entry 사용하기

오늘 새로 배운 내용

Map.Entry 

Map.Entry를 이용하면 Map에 저장된 모든 key-value 쌍을 각각의 key-value를 갖고 있는 하나의 객체로 얻을 수 있다.

 

간단한 예시를 보면 이해하기 편하다.

기존 Map에 저장된 모든 key-value의 값을 얻으려면 보통 아래와 같이 map.keySet()으로 각각의 key에 대해 value값을 얻으려고 할 것이다.

 

Map<String, String> hashMap = new HashMap<>();
        
for (String key : hashMap.keySet()) {
    System.out.println("key : " + key);
    System.out.println("value : " + hashMap.get(key));
}

 

하지만 Map.entrySet을 사용하면 Map.Entry객체가 나오는데 각각의 Map.Entry 객체는 Map의 한 항목을 나타내며, getKey()와 getValue() 메서드를 사용하여 키와 값에 접근할 수가 있다.

 

Map.entrySet을 이용해 위 코드를 아래와 같이 리팩터링 할 수 있다.

 

Map<String, String> hashMap = new HashMap<>();

for (Map.Entry<String, String> entry : hashMap.entrySet()) {
    System.out.println("key : " + entry.getKey());
    System.out.println("value : " + entry.getValue());
}

 

entry라는 객체는 hashMap에 대한 key-value 쌍을 하나의 객체로 갖고 있어 getKey(), getValue() 메서드로 key와 value에 접근할 수 있도록 해준다.

 

 

Map.Entry 메서드

  • getKey(): Map.Entry 객체의 key값을 반환한다.
  • getValue(): Map.Entry 객체의 value값을 반환한다.
  • setValue(value): Map.Entry 객체의 key에 대한 value값을 수정할 수 있다.

 

이외에도 equals(), hashCode() 메서드가 존재한다. 

 

Map.Entry의 장점

 

1. Map.Entry를 사용하면 각각의 key와 value가 연결되어 하나의 객체로 표현되어 서로 연관되어 있다는 것을 명시할 수 있다는 장점이 있다.

2. 동적으로 key에 대한 value값을 편하게 수정할 수 있다. Map.entry를 사용하지 않고 key의 value값을 수정하려면 key값을 얻어오고 수정하고 다시 저장해주는 작업을 해줘야하는데 그러지 않고 한번에 setValue() 메서드를 이용해 수정할 수 있다.