반응형
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
- @AutoConfiguration
- JsonType
- Thread Safety
- 포맷터
- 쓰레드 안전
- jpa
- vaultTemplate
- Spring Boot
- RestTemplate
- gradle
- Stream
- spring
- java
- fotmatter
- Save Action
- AOP this
- 개방/폐쇄 원칙
- AOP 매개변수
- JsonStringType
- restTemple
- ClientHttpRequestInterceptor
- AccessLevel
- auto configuration
- AOP
- ResponseBodyAdvice
- AOP target
- findFirst
- Starter
- LogInterceptor
- findAny
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 |