-
ArrayList에서 Optional 객체 찾기, filter 조건 걸기, 배열에서 filter 조건걸기JAVA 2021. 12. 1. 23:11728x90
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편 - 백엔드 웹 개발 활용 기술
728x90728x90'JAVA' 카테고리의 다른 글
[Java] 쓰레드 스택, 힙 영역, 쓰레드 로컬 (1) 2024.11.24 [Java] Apache Poi 파워포인트 표 만들기 (0) 2022.11.21 String으로 저장된 날짜를 Date 형식으로 변환하여 DB에 저장하기 (0) 2021.09.14 JAVA apache poi - PowerPoint 읽고 새로운 PowerPoint 생성 (0) 2021.07.02