오늘 새로 배운 내용
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() 메서드를 이용해 수정할 수 있다.
'성장이야기 > TIL' 카테고리의 다른 글
[개발일지] 230526 정적 멤버 클래스를 이용해 불필요한 중복을 제거하자 (0) | 2023.05.26 |
---|---|
[개발일지] 230524 제네릭 상속 (with 와일드카드) (0) | 2023.05.24 |
[개발일지] 230511 @JsonAutoDetect을 이용해 직렬화, 역직렬화 (0) | 2023.05.11 |
[개발일지] 230510 Playtika testcontainers (0) | 2023.05.10 |
[개발일지] 230509 @Mock, @MockBean, @InjectMocks의 관계 (0) | 2023.05.09 |