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

2023. 5. 16. 23:30·성장이야기/TIL

오늘 새로 배운 내용

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
'성장이야기/TIL' 카테고리의 다른 글
  • [개발일지] 230526 정적 멤버 클래스를 이용해 불필요한 중복을 제거하자
  • [개발일지] 230524 제네릭 상속 (with 와일드카드)
  • [개발일지] 230511 @JsonAutoDetect을 이용해 직렬화, 역직렬화
  • [개발일지] 230510 Playtika testcontainers
seungjjun
seungjjun
  • seungjjun
    개발이야기
    seungjjun
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 성장이야기
        • TIL
        • 주간회고
      • Java
        • Spring
        • Spring Security
      • 트러블슈팅
      • Kafka
      • OS
      • Network
      • 메가테라
      • Database
      • Algorithm
      • Git
      • HTML
      • CSS
      • 독서
      • 컴퓨터 이해하기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    항해플러스
    이커머스 프로젝트
    개발일지
    메가테라 주간회고
    redis
    Til
    graphQL
    메가테라
    항해99
    주간회고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
seungjjun
[개발일지] 230516 Java Map.Entry 사용하기
상단으로

티스토리툴바