작성
·
635
1
Member class에는 long id, String name을 가지고 있어서
id값에 Long을 주는건 이해가 되는데
name값을 넣어주려면 Member가 아니라 String이 들어가야되는게 아닌가요??
잘 이해가 안되서 설명 부탁드리겠습니다!
답변 1
11
안녕하세요.
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("후라이");
.
조금 유치한 비유지만 이해가 되셨길 바랍니다.
와... 한번에 이해가 됐어요!! 정말 감사합니다!