인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Myungsik Ji님의 프로필 이미지

작성한 질문수

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

객체 List에서 필터 적용하는 방법이 궁금합니다.

작성

·

49

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
섹션4를 수강하고 나서 제가 필요한 기능을 구현하던 중에 문의가 생겨 질문남깁니다.

 

검색조건에 해당하는 객체들을 List 형태로 return 하려고 합니다.

return type : List<Member>

store type : List<Member>

 

Member 안에 있는 이름이나 ID로 필터해서 검색하려고 하는데 .filter 에서 어떻게 적용해야 하는지 잘모르겠습니다.

 

아래 내용은 제가 시도해봤던 코드입니다.

 

Order 클래스로 한것만 다르고 나머지는 동일합니다.

    public Optional<List<Order>> findIssueOrder(){
//        List<Order> orderList = new ArrayList<>();


        return null;
//        return store.stream()
//                .filter(order -> order.isCoupangDeliveryStop())
//                .collect();
        

//                .toList();
//                .filter(order -> order.isCoupangDeliveryStop().equals(true))
//                .findAny();
    }

    @Override
    public Optional<List<Order>> findOrderByRecipientName(String recipientName){
        return null;
    //        return store.stream()
    //                .filter(order -> order.getRecipientName().equals(recipientName))
    //                .findAny();
    }

 

조언해주시면 감사하겠습니다.

JAVA웹를 예전에 했었는데 오랜만에 다시 시작하려니 막막해서 검색하다가 강의 찾아서 듣고 있는데 너무 도움됩니다. 감사합니다!

답변 1

0

y2gcoder님의 프로필 이미지

안녕하세요. Myungsik Ji님, 공식 서포터즈 y2gcoder입니다.

너무 잘 구현하셨습니다! 리스트 형태로 반환하고 싶으시다면 마지막에 findAny() 대신 .toList()나, .collect() 를 한번 이용해보시면 좋을 것 같습니다 🙂

감사합니다.

Myungsik Ji님의 프로필 이미지
Myungsik Ji
질문자

return store.stream()
        .filter(order -> order.isCoupangDeliveryStop())
        .collect();

위처럼 작성하면 Cannot resolve method 'collect()' 에러가 발생되고

 

아래처럼 작성하면 Incompatible types. Found: 'java.util.List<com.tcg.resell_management.domain.Order>', required: 'java.util.Optional<java.util.List<com.tcg.resell_management.domain.Order>>'

에러가 발생됩니다.

return store.stream()
        .filter(order -> order.isCoupangDeliveryStop())
        .toList();
y2gcoder님의 프로필 이미지

에러 메시지를 보면 반환타입으로 Optional이 감싸져 있습니다 🙂

반환 타입을 List<Order> 로 바꿔보시겠습니까?