작성
·
377
0
질문 1 : findByName
@Override
public Optional<Member> findById(long Id) {
return Optional.ofNullable(store.get(Id));
}
@Override
public Optional<Member> findByName(String Name) {
return store.values().stream().filter(member -> member.getName().equals(Name)).findAny();
}
여기서 findByName은 필요가 없지 않나요?
MemoryMemberRepository 클레스 에서 hashmap을 사용하면 나중에 키 값으로 해당 이름을 가져오겠다는 뜻으로 보이는데
그러면 키값이 null이면 자동으로 value값도 null이니 굳이 작성하지 않아도 되는 코드 아닌가 라는 생각이 들었습니다.
아! 혹시 value값으로 key값을 찾기 위하여 필요한 코드인가요?
질문 2: 왜 findByid와 findByName 코드가 다른가요? 둘다 동일하게 null인경우 optional을 통해서 null값을 출력하는 과정인데
두 코드가 다를 필요가 없지 않나요?
답변 1
0
안녕하세요. 황 준성.님, 공식 서포터즈 OMG입니다.
1.
hashMap에 다음과 같이 저장되어있다고 할 때,
key(id) / value(member)
1L / {1L,홍길동}
2L / {2L,이순신}
3L / {3L,홍길동}
store.values().stream().filter
로 순회 하므로 value를 순회하는데,
member -> member.getName().equals(Name)).findAny()
이 코드에서 각 Member들의 이름을 파라미터로 받은 name과 비교하여 찾은 데이터를 반환합니다.
홍길동을 찾을 때, 두 명의 동일한 이름을 가진 홍길동 중 한명을 반환한다고 보시면 됩니다.
key가 Null이면 이라고 하셨는데, key가 Null이 발생하는 상황은 언제라고 생각하시는지요??
2.
키값인 id는 고유한 값이지만, name은 고유하지 않기 때문에 둘의 코드가 다릅니다. 구현하는 애플리케이션의 정책에 따라 다르게 동작할 수 있습니다.
감사합니다.