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

wjdtlr0604님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

map<Long,Member>를 넣은 이유가 궁금합니다!

작성

·

588

1

Member class에는 long id, String name을 가지고 있어서

id값에 Long을 주는건 이해가 되는데

name값을  넣어주려면 Member가 아니라 String이 들어가야되는게 아닌가요??

잘 이해가 안되서 설명 부탁드리겠습니다!

답변 1

11

codesweaver님의 프로필 이미지

2021. 06. 09. 11:04

안녕하세요.

Map<Long, Member> store; 부분을 이해하기 위해서 예를 하나 들겠습니다.

.

Member 대신 살아서 움직이는 계란(?)을 생각해주세요. 계란은 각자 고유번호와 이름을 가지고 있습니다. 이 고유번호는 계란 각자만이 알고 있습니다.

> 계란1: 나는 1번 계란, 이름은 "후라이".

> 계란2: 나는 2번 계란, 이름은 "찜".

.

이제 이 계란들을 계란판에 넣어서 보관하려 합니다.

그런데 계란이 계란판에 들어가려면 계란판 입구에서 '점원'에게 자신의 고유번호를 말해줘야 하는 규칙이 있습니다.

> 점원: 네, 다음분. 아이디가 어떻게 되시죠?

> 계란1: 네 저는 1번이에요.

> 점원: (종이에 아이디를 적으며) 네. 1번이시고... 그리고 계란 맞으시죠?

> 계란1: 당근이죠!

> 점원: 네, 들어가세요.

.

그런식으로 계란들이 각자 자리를 잡고 앉아있습니다.

이 계란판은 자바 코드로 Map<Long, 계란> 이라고 표현할 수 있습니다.

왜 점원은 굳이 불편하게 아이디를 말해달라고 했을까요?

그것은 만약 계란판에서 계란을 꺼내야 할 때 필요한 계란을 단번에 찾아내기 위해서입니다.

.

예를들어 2번 계란을 급하게 찾아야 할 때 점원은 다음과 같이 아이디를 사용할 수 있습니다.

계란 egg = store.get(2);

System.out.println(egg.getName()); // "찜"

.

만약에 점원이 아이디를 기록하는 것이 아니라계란의 이름을 기록하기로 한 상황이면 어떻게 될까요?

코드는 다음과 같이 바뀔것입니다.

Map<String, 계란> store;

.

그리고 자신이 찾고자 하는 계란을 찾기 위해 다음과 같이 할 수 있습니다.

계란 egg = store.get("후라이");

.

조금 유치한 비유지만 이해가 되셨길 바랍니다.

wjdtlr0604님의 프로필 이미지
wjdtlr0604
질문자

2021. 06. 09. 16:30

와... 한번에 이해가 됐어요!! 정말 감사합니다!

김영한님의 프로필 이미지
김영한
지식공유자

2021. 06. 09. 19:06

codesweaver님 감사합니다!

논노님의 프로필 이미지

2021. 10. 29. 16:44

넘 귀여운 비유...