티스토리 뷰
● 도입
boolean allMatch(Predicate<? super T> predicate);
boolean anyMatch(Predicate<? super T> predicate);
allMatch
– Stream 안의 모든 데이터가 predicate을 만족하면 true를 반환
- '&&'
anyMatch
– Stream 안의 데이터 중 하나라도 predicate을 만족하면 true를 반환
- '||'
* Predicate : input을 1개 받아 Boolean을 return 하는 함수형 인터페이스
● 실습
1.
package com.fastcampus.functionalprogramming.chapter8;
import java.util.Arrays;
import java.util.List;
import com.fastcampus.functionalprogramming.chapter8.model.User;
public class Chapter8Section2 {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(3, -4, 2, 7, 9);
// '모든' 숫자가 양수인가?
boolean allPositive = numbers.stream().allMatch(number -> number > 0);
System.out.println("allPositive? : " + allPositive);
// 음수가 '1개 이상' 있는가?
boolean anyNegative = numbers.stream().anyMatch(number -> number < 0);
System.out.println("anyNegative? : " + anyNegative);
}
}
2.
package com.fastcampus.functionalprogramming.chapter8;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import com.fastcampus.functionalprogramming.chapter8.model.Order;
import com.fastcampus.functionalprogramming.chapter8.model.Order.OrderStatus;
import com.fastcampus.functionalprogramming.chapter8.model.User;
public class Chapter8Section2 {
public static void main(String[] args) {
User user1 = new User()
.setId(101)
.setName("Alice")
.setVerified(true)
.setEmailAddress("alice@fastcampus.co.kr");
User user2 = new User()
.setId(102)
.setName("Bob")
.setVerified(false)
.setEmailAddress("bob@fastcampus.co.kr");
User user3 = new User()
.setId(103)
.setName("Charlie")
.setVerified(false)
.setEmailAddress("charlie@fastcampus.co.kr");
List<User> users = Arrays.asList(user1, user2, user3);
// TODO : user들이 '전부' 검증이 됐는지 알아보자
// 내 풀이
Boolean areAllUserVerified = users.stream().map(User::isVerified).allMatch(x -> x == true);
System.out.println("allVerified1? : " + areAllUserVerified);
// 강사 풀이 - 훨씬 더 간단하다.
Boolean areAllUserVerified2 = users.stream().allMatch(User::isVerified);
System.out.println("allVerified2? : " + areAllUserVerified2);
}
}
3. ERROR 상태인 order가 '최소 1개 이상'이면 true를 출력
package com.fastcampus.functionalprogramming.chapter8;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import com.fastcampus.functionalprogramming.chapter8.model.Order;
import com.fastcampus.functionalprogramming.chapter8.model.Order.OrderStatus;
import com.fastcampus.functionalprogramming.chapter8.model.User;
public class Chapter8Section2 {
public static void main(String[] args) {
// 숙제
Order order1 = new Order()
.setId(1001L)
.setAmount(BigDecimal.valueOf(2000))
.setStatus(OrderStatus.CREATED);
Order order2 = new Order()
.setId(1002L)
.setAmount(BigDecimal.valueOf(4000))
.setStatus(OrderStatus.ERROR);
Order order3 = new Order()
.setId(1003L)
.setAmount(BigDecimal.valueOf(3000))
.setStatus(OrderStatus.ERROR);
Order order4 = new Order()
.setId(1004L)
.setAmount(BigDecimal.valueOf(7000))
.setStatus(OrderStatus.PROCESSED);
List<Order> orders = Arrays.asList(order1, order2, order3, order4);
// ERROR 상태인 order가 '최소 1개 이상'이면 true를 출력
Boolean isErrorOrderExist = orders.stream().anyMatch(order -> order.getStatus() == OrderStatus.ERROR);
System.out.println(isErrorOrderExist);
}
}
'Backend > Java8' 카테고리의 다른 글
#27 Advanced Stream - Reduce (0) | 2022.10.16 |
---|---|
#26 Advanced Stream - Find First / Find Any (1) | 2022.10.15 |
#24 Advanced Stream - Max / Min / Count (0) | 2022.10.13 |
#23 Optional 응용 method (0) | 2022.10.12 |
#22 Optional(있을 수도 or 없을 수도 = null일 수도 or 아닐수도) (0) | 2022.10.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DART
- 코딩테스트
- 프로세스
- API
- 코테
- nosql
- OS
- jpa
- Advanced Stream
- 메모리
- 알고리즘
- java
- Phaser3
- Java8
- SpringBoot
- git
- MySQL
- SQL
- 빅데이터
- spring
- Spring Boot
- 자료구조
- Stream
- MongoDB
- Phaser
- 운영체제
- 빅데이터 분석기사
- 프로그래머스
- node.js
- db
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함