map<Long,Member>를 넣은 이유가 궁금합니다!
714
작성한 질문수 3
Member class에는 long id, String name을 가지고 있어서
id값에 Long을 주는건 이해가 되는데
name값을 넣어주려면 Member가 아니라 String이 들어가야되는게 아닌가요??
잘 이해가 안되서 설명 부탁드리겠습니다!
답변 1
12
안녕하세요.
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("후라이");
.
조금 유치한 비유지만 이해가 되셨길 바랍니다.
..
0
83
2
Unused property.....
0
104
2
project JDK is misconfigured
0
138
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
84
2
단위/통합 테스트 버전충돌 문제
0
91
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
232
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
105
2
윈도우 build test오류 질문
1
103
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
102
2
테스트 실행 시 에러 질문
0
295
1
name을 통한 비교와 객체를 통한 비교
0
77
1
빌드 후 libs 없음
1
132
1
윈도우 gradlew.bat 에러
0
170
1
@PostMapping("/members/new")가 동작하지 않습니다
0
91
1
java static class와 kotlin class
0
80
1
스프링 DB연결
0
128
1
소요 시간
0
89
2
ddl.sql에 빨간 밑줄
1
102
2
welcome page 에러
0
186
3
잘 모르겠습니다.
0
164
2
fail을 똑같이 쳤는데 오류가 발생해요
0
159
2
index.html Welcome page
0
127
1
프로젝트 gradle-groovy ?
0
382
1
테스트코드 메서드명 한글
0
205
2





