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