ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ArrayList에서 Optional 객체 찾기, filter 조건 걸기, 배열에서 filter 조건걸기
    JAVA 2021. 12. 1. 23:11
    728x90
    728x90

    Java 8에서 Optional 객체를 사용하면 filter 를 사용하여 조건을 걸 수 있다.
    코드를 통해서 알아보자.

     

    ArrayList에서 Optional 객체 찾기, filter 조건 걸기

    로그인 기능을 구현하는 코드이다.
    Memeber라는 객체가 있다면 Optional<Memeber>로 사용하면 된다.

    우선 로그인을 하기 위해서는 loginId로 Optional<Member> 객체를 가져오고 비밀번호가 일치하는지 확인해야한다.
    Member 를 담고 있는 ArrayList<Member> 를 반환하는 findAll() 이라는 함수가 있다고 가정해보자.

    public Optional<Member> findByLoginId(Stirng loginId){
    	return findAll().stream()
        		 	.filter(m -> m.getLoginId().equals(loginId))
                 		.findFirst();
    }

    findAll() 로 ArrayList 를 가져오고
    stream() 으로 하나씩 조회하고
    filter() 로 조건에 만족하는 객체를 가져오고
    findFirst() 로 그 중 첫번째의 객체를 가져온다.

    ArrayList<Member>에 stream().filter().findFirst() 를 걸게 되면 Optional<Member> 가 나오게 된다.

     

    public Member login(String loginId, String passsword) {
    	return findByLoginId(loginId)
        		.filter(m -> m.getPassword().equals(password))
            	.orElse(null);
    }

    findByLoginId() 로 Optional<Member> 객체를 가져오고
    filter() 로 비밀번호가 일치하는지 확인 후 맞다면 Member 객체를 반환,
    orElse() 로 없다면 null 을 반환한다.

    Optional<Member>에 filter() 를 걸게 되면 Member가 반환이 된다.

     

     

    배열에서 filter 조건걸기

    배열에서도 filter 조건걸기가 가능하다.
    코드를 통해 살펴보자.

    public Cookie findCookie(HttpServletRequest request, String cookieName) {
        Cookie[] cookies = request.getCookies();
    
        return Arrays.stream(cookies)
                .filter(cookie -> cookie.getName().equals(cookieName))
                .findAny()
                .orElse(null);
    }

    Cookie 배열을 찾아서 Arrays.stream().filter 를 사용하면 조건을 걸 수 있다.

     

    출처 : 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (김영한 저) 스프링 MVC 2편 - 백엔드 웹 개발 활용  스프링 MVC 2편 - 백엔드 웹 개발 활용 기술프링 MVC 2편 - 백엔드 웹 개발 활용 기술

    728x90
    728x90
Designed by Tistory.