반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- spring
- AOP
- 쓰레드 안전
- Save Action
- AccessLevel
- ResponseBodyAdvice
- 포맷터
- Spring Boot
- Stream
- RestTemplate
- fotmatter
- restTemple
- Thread Safety
- AOP target
- findAny
- gradle
- AOP this
- AOP 매개변수
- ClientHttpRequestInterceptor
- JsonStringType
- JsonType
- @AutoConfiguration
- LogInterceptor
- auto configuration
- Starter
- java
- findFirst
- vaultTemplate
- jpa
- 개방/폐쇄 원칙
Archives
- Today
- Total
맨땅에 헤딩하는 개바른자
[Java] Stream > Filter 본문
반응형
Git
https://github.com/ymwoo88/stream/tree/feature/filter-%EC%98%88%EC%A0%9C
설명
Stream의 Filter API는 Predicate에서 true를 반환하는 데이터만 존재하는 Stream을 리턴하는 기능을 제공합니다.
- filter는 and조건으로 중첩적용이 가능하나 or조건은 사용되지 않습니다.
Filter
Stream<T> filter(Predicate<? super T> predicate);
예제
샘플 데이터
@Getter @Builder @NoArgsConstructor @AllArgsConstructor @ToString public class User { private Long id; private String name; private String email; private Integer age; public static User getUserAmil() { return User.builder() .id(1L) .name("amil") .email("amil@ymwoo.com") .age(35) .build(); } public static User getUserBenny() { return User.builder() .id(2L) .name("benny") .email("benny@ymwoo.com") .age(29) .build(); } public static User getUserCho() { return User.builder() .id(3L) .name("cho") .email("cho@ymwoo.com") .age(33) .build(); } public static List<User> getExamUserList() { return Arrays.asList(getUserAmil(), getUserCho(), getUserBenny()); } }
예제1) 단건 필터링
@Test @DisplayName("user name이 amil 인경우 필터링") void case1() { List<User> examUserList = User.getExamUserList(); List<User> filteredUser = examUserList .stream() .filter(user -> "amil".equals(user.getName())) .toList(); // 결과 출력 filteredUser .forEach(user -> log.info(">>> Filtered User Info = {}", user)); }
15:30:32.130 [Test worker] INFO com.ymwoo.stream.filter.StreamFilterTest -- >>> Filtered User Info = User(id=1, name=amil, email=amil@ymwoo.com, age=35)
예제2) 다건 필터링
@Test @DisplayName("30대 이하이면서 일하는 중인경우 필터링") void case2() { List<User> examUserList = User.getExamUserList(); List<User> filteredUser = examUserList .stream() .filter(user -> 30 > user.getAge()) .filter(User::getIsWorking) .toList(); // 결과 출력 filteredUser .forEach(user -> log.info(">>> Filtered User Info = {}", user)); }
15:52:12.338 [Test worker] INFO com.ymwoo.stream.filter.StreamFilterTest -- >>> Filtered User Info = User(id=1, name=amil, email=amil@ymwoo.com, age=25, isWorking=true) 15:52:12.345 [Test worker] INFO com.ymwoo.stream.filter.StreamFilterTest -- >>> Filtered User Info = User(id=2, name=benny, email=benny@ymwoo.com, age=29, isWorking=true)
참조
반응형
'JAVA > Stream' 카테고리의 다른 글
[Java] Stream > distinct (0) | 2023.06.08 |
---|---|
[Java] Stream > flatMap (0) | 2023.06.08 |
[Java] Stream > map (0) | 2023.06.08 |
[Java] Stream > sorted (0) | 2023.05.31 |
[Java] Stream (0) | 2023.05.24 |