채널톡 아이콘

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

생각하는자님의 프로필 이미지

작성한 질문수 110

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

회원 도메인과 리포지토리 만들기

회원 도메인과 리포지토리 만들기- 람다 질문

해결된 질문

작성

·

67

·

수정됨

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

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

[질문 내용]
안녕하세요. 질문을 드립니다.
자바 고급 2편을 어느 정도 끝내고 스프링 입문 으로 넘어왔는데, findBy 부분에서 옵셔널, 및 람다가 나와서, 무슨 내용인지 이해가 안됩니다.
옵셔널은 영한님이 설명해주니 어느 정도 이해가 가능한데,

람다에서
filter() 및 findAny() 라는 메서드가 어떤식으로 작동되는지 이해가 안가는 상황 입니다.

이럴 때에는 고급3편 으로 가서 filter() 및 findyAny() 라는 것을 공부하고 오는게 나은가요?

filter() 안에 있는 내용은 어느 정도 이해 가능합니다.

member 객체를 찾은 다음 member의 getName을꺼내서 인자값name이랑 비교 해라.. 이정도?

추가1

자바 고급3편은 나올 때 구매 해둔 상태입니다.
답변 부탁 드립니다.

답변 1

1

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 생각하는자 님의 질문에 도움이 될 수 있는 정보를 제공하겠습니다.

먼저, 람다 표현식스트림 API를 이해하는 것은 자바 8의 강력한 기능을 활용하는 데 매우 중요합니다. 질문하신 내용 중에서 filter()findAny()의 동작 방식에 대해 간단히 설명드리겠습니다.

  1. filter() 메서드: filter()는 스트림의 각 요소에 대해 주어진 조건을 적용하여, 그 조건을 만족하는 요소들만을 새로운 스트림으로 반환합니다. 예를 들어, member.getName().equals(name) 조건을 사용하면, 스트림 내에서 이름이 해당 name과 일치하는 member 객체들만 필터링됩니다.

  2. findAny() 메서드: findAny()는 필터링된 스트림에서 요소를 발견하면 그 요소를 감싸는 Optional 객체를 반환합니다. 이 메서드는 스트림에서 “아무거나 값 하나”만 찾으면 종료합니다. 이때 “아무거나”라는 것은 멀티스레드 환경에서 최적의 결과를 제공하며, 순서가 없는 스트림일 때 특히 유용합니다.

두 메서드는 모두 자바의 스트림 API에 속하며, 데이터 처리 작업을 필터링, 매핑, 축소하는 데 사용됩니다. 이를 통해 간결하고 가독성 높은 코드를 작성할 수 있습니다.

만약 자바에서의 스트림 API 사용에 익숙하지 않으시다면, 추가적으로 자바 스트림 관련 강의를 수강하시는 것도 좋은 방법입니다.

이외에도, 기존 질문과 답변에서 유사한 부분을 다룬 것이 있습니다. 확인해 보시면 많은 도움이 될 것입니다.

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