String[] objs = {"1 CIRCLE", "2 DIAMOND", "3 TRIANGLE", "4 DIAMOND",
"5 CIRCLE", "6 HEXAGON"};
Observable<String> source = Observable.fromArray(objs)
.filter(obj -> obj.endsWith("CIRCLE));
source.subscribe(System.out::println);
//출력값
1 CIRCLE
2 CIRCLE
👉🏻 CIRCLE로 끝나는 값만 출력
🐥filter() 함수와 비슷한 함수들
String[] balls = {"red", "green", "blue"}
Maybe<String> source = Observable.fromArray(balls)
.reduce((ball1, ball2) -> ball2 + "(" + ball1 + ")";
source.subscribe(System.out::println);
//결과값
blue(green(red))
Maybe
객체로 리턴ex) 데이터 쿼리하기
- 전체 매출 데이터를 입력
- 매출 데이터 중 TV 매출을 필터링
- TV 매출의 합을 구함
List<Pair<String,Integer>> sales = new ArrayList<>();
sales.add(Pair.of("TV", 2500));
sales.add(Pair.of("Camera", 300));
sales.add(Pair.of("TV", 1600));
sales.add(Pair.of("Phone", 800)));
Maybe<Integer> tvSales = Observable.fromIterable(sales)
.filter(sale -> "TV".equals(sale.getLeft()))
.map(sale -> sale.getRight())
.reduce((sale1, sale2) -> sale1 + sale2);
tvSales.subscribe(tot -> System.out.println("TV Sales: $" + tot));
👉🏻 reduce()를 사용하기 위해 Maybe로 선언
👉🏻filter()
를 이용하여 TV 목록을 조회하고 map()
을 이용해 값을 가져오고 reduce()
를 통해 합계를 구함
*getLeft()와 getRight()는 pair 클래스에서 왼쪽값과 오른쪽 값을 얻어오기 위해 호출