인프런 커뮤니티 질문&답변

도토리님의 프로필 이미지
도토리

작성한 질문수

김영한의 실전 자바 - 중급 2편

문제와 풀이2 - Map2

컬렉션 프레임워크9에서 문제와풀이2의 문제6번에 대해 여쭤봅니다.

해결된 질문

작성

·

43

·

수정됨

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

컬렉션 프레임워크9에서 문제와풀이2의 문제6번에 대해 여쭤봅니다.

 

memberMap이라는 해시맵에서 첫번째 매개변수로 member.getId 가 들어가고 두번째 매개변수로 member클래스가 들어가는데 첫번째 매개변수가 member클래스의 멤버변수이어야 하는 이유가 있을까요? 문제를 풀던 중에 아직은 잘 모르겠지만 member클래스의 멤버변수 두개를 memberMap이라는 해시맵에 두개를 지정해도 될거같기도 한데(제 극히 초보인 관점에서 본 추측일 뿐입니다.그렇게 풀어볼 능력까진 없어서요.) 굳이 두번째에 클래스를 넣으시고 첫번째에 클래스의 멤버변수 하나를 넣으신 이유가 궁금합니다. 제 짧은 시각으로 보면 중복 같아 보여서요 질문6번의 의도가 파악이 안 돼서 궁금하여 여쭤봅니다.

 

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 도토리님,

컬렉션 프레임워크에서 특히 해시맵(HashMap)의 사용에 대해 질문해 주셨네요. 해시맵은 키-값 쌍으로 데이터를 저장하는 자료구조로, 빠른 데이터 검색을 위한 효율적인 방법입니다. 일반적으로 해시맵의 키는 데이터의 구분을 위한 고유 식별자로 사용되고, 값은 해당 데이터에 대한 실제 정보를 담고 있습니다.

질문에 대한 답변:

  1. 첫 번째 매개변수로 member.getId()를 사용:

    • member.getId()를 사용한다는 것은 해당 member 객체를 유일하게 식별할 수 있는 기준이 있다는 의미입니다. 해시맵에서 키는 고유해야 하므로, ID를 키로 사용하는 것은 합리적인 선택입니다.
  2. 두 번째 매개변수로 member 객체를 통으로 저장:

    • 객체 전체를 값으로 저장하면 해당 객체의 모든 정보를 한 번에 가져올 수 있는 장점이 있습니다. 만약 member 객체의 이름, 아이디 등의 각 필드를 해시맵의 개별적인 키로 관리하게 되면 각각의 데이터 필드에 접근하기 위한 코드를 추가로 작성해야 할 수도 있습니다. 이보다 member 객체를 통으로 저장함으로써 코드의 복잡성을 줄이고, 필요할 때 이미 저장된 객체의 속성을 바로 접근할 수 있습니다.

의도:

이 문제의 의도를 파악한다면, 객체지향의 원리를 이해하고 활용하는 연습일 가능성이 큽니다. 객체를 구조적으로 관리하고 그 객체의 고유한 식별을 효율적으로 처리하는 방식으로 해시맵을 사용하면서, 객체지향적 사고와 데이터 저장 관리의 실습이 이루어질 수 있습니다.

관련해서 HashMap을 사용하는 질문에 대한 기존 답변도 함께 참고해 보세요:
- LinkedHashMap, TreeMap 등이 있는데 굳이 이 상황(데이터 순서 보장, 키 정렬이 필요 없는)에서는 HashMap(순서 보장X)으로도 충분하기 때문입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

도토리님의 프로필 이미지
도토리

작성한 질문수

질문하기