From 81e90a39f8f3e548f58eac43c3d011b7f0d54cdc Mon Sep 17 00:00:00 2001 From: haerong22 Date: Wed, 16 Mar 2022 17:10:30 +0900 Subject: [PATCH] rxjava : stream --- RxJava/basic/src/_03_stream/StreamEx_06.java | 16 +++++++++ RxJava/basic/src/_03_stream/StreamEx_07.java | 18 ++++++++++ RxJava/basic/src/_03_stream/StreamEx_08.java | 17 ++++++++++ RxJava/basic/src/_03_stream/StreamEx_09.java | 29 ++++++++++++++++ RxJava/basic/src/_03_stream/StreamEx_10.java | 35 ++++++++++++++++++++ RxJava/basic/src/_03_stream/StreamEx_11.java | 28 ++++++++++++++++ 6 files changed, 143 insertions(+) create mode 100644 RxJava/basic/src/_03_stream/StreamEx_06.java create mode 100644 RxJava/basic/src/_03_stream/StreamEx_07.java create mode 100644 RxJava/basic/src/_03_stream/StreamEx_08.java create mode 100644 RxJava/basic/src/_03_stream/StreamEx_09.java create mode 100644 RxJava/basic/src/_03_stream/StreamEx_10.java create mode 100644 RxJava/basic/src/_03_stream/StreamEx_11.java diff --git a/RxJava/basic/src/_03_stream/StreamEx_06.java b/RxJava/basic/src/_03_stream/StreamEx_06.java new file mode 100644 index 00000000..1dc3f855 --- /dev/null +++ b/RxJava/basic/src/_03_stream/StreamEx_06.java @@ -0,0 +1,16 @@ +package _03_stream; + +import java.util.List; + +public class StreamEx_06 { + + public static void main(String[] args) { + + List vegetarianMenu = Dish.menu.stream() + .filter(Dish::isVegetarian) + .toList(); + + System.out.println("vegetarianMenu = " + vegetarianMenu); + + } +} diff --git a/RxJava/basic/src/_03_stream/StreamEx_07.java b/RxJava/basic/src/_03_stream/StreamEx_07.java new file mode 100644 index 00000000..ac857cb0 --- /dev/null +++ b/RxJava/basic/src/_03_stream/StreamEx_07.java @@ -0,0 +1,18 @@ +package _03_stream; + +import java.util.Arrays; +import java.util.List; + +public class StreamEx_07 { + + public static void main(String[] args) { + + // distinct -> hashCode, equals 로 결정 + List list = Arrays.asList(1, 2, 1, 3, 3, 2, 4); + + list.stream() + .filter(i -> i % 2 == 0) + .distinct() + .forEach(System.out::println); + } +} diff --git a/RxJava/basic/src/_03_stream/StreamEx_08.java b/RxJava/basic/src/_03_stream/StreamEx_08.java new file mode 100644 index 00000000..7616c3a5 --- /dev/null +++ b/RxJava/basic/src/_03_stream/StreamEx_08.java @@ -0,0 +1,17 @@ +package _03_stream; + +import java.util.List; + +public class StreamEx_08 { + + public static void main(String[] args) { + + // skip(n) n번째 요소 이후의 요소만 선택, 없으면 빈배열 + List dishes = Dish.menu.stream() + .filter(dish -> dish.getCalories() > 300) + .skip(2) + .toList(); + + System.out.println("dishes = " + dishes); + } +} diff --git a/RxJava/basic/src/_03_stream/StreamEx_09.java b/RxJava/basic/src/_03_stream/StreamEx_09.java new file mode 100644 index 00000000..58140a0f --- /dev/null +++ b/RxJava/basic/src/_03_stream/StreamEx_09.java @@ -0,0 +1,29 @@ +package _03_stream; + +import java.util.Arrays; +import java.util.List; + +public class StreamEx_09 { + + public static void main(String[] args) { + + // map -> 다른 타입으로 변환 + List result = Dish.menu.stream() + .map(Dish::getName)// Dish -> String + .map(String::length)// String -> Integer + .toList(); + + System.out.println("result = " + result); + + // flatMap + List words = Arrays.asList("Hello", "world"); + + List uniqueCharacter = words.stream() + .map(word -> word.split("")) // String -> String[] 이 되므로 Stream + .flatMap(Arrays::stream) // Stream + .distinct() + .toList(); + + System.out.println("uniqueCharacter = " + uniqueCharacter); + } +} diff --git a/RxJava/basic/src/_03_stream/StreamEx_10.java b/RxJava/basic/src/_03_stream/StreamEx_10.java new file mode 100644 index 00000000..e6b805b2 --- /dev/null +++ b/RxJava/basic/src/_03_stream/StreamEx_10.java @@ -0,0 +1,35 @@ +package _03_stream; + +import java.util.Optional; + +public class StreamEx_10 { + + public static void main(String[] args) { + if (isVegetarianFriendlyMenu()) { + System.out.println("Vegetarian friendly"); + } + + System.out.println(isHealthyMenu()); + System.out.println(isHealthyMenu2()); + + findVegetarianDish() + .ifPresent(dish -> System.out.println(dish.getName())); + } + + private static Optional findVegetarianDish() { + return Dish.menu.stream().filter(Dish::isVegetarian).findAny(); + } + + private static boolean isHealthyMenu2() { + return Dish.menu.stream().noneMatch(dish -> dish.getCalories() >= 1000); + } + + private static boolean isHealthyMenu() { + return Dish.menu.stream().allMatch(dish -> dish.getCalories() < 1000); + } + + private static boolean isVegetarianFriendlyMenu() { + return Dish.menu.stream().anyMatch(Dish::isVegetarian); + } + +} diff --git a/RxJava/basic/src/_03_stream/StreamEx_11.java b/RxJava/basic/src/_03_stream/StreamEx_11.java new file mode 100644 index 00000000..71006d17 --- /dev/null +++ b/RxJava/basic/src/_03_stream/StreamEx_11.java @@ -0,0 +1,28 @@ +package _03_stream; + +import java.util.Arrays; +import java.util.List; + +public class StreamEx_11 { + + public static void main(String[] args) { + + List numbers = Arrays.asList(3, 4, 5, 1, 2); + + Integer sum = numbers.stream().reduce(0, Integer::sum); + System.out.println("sum = " + sum); + + numbers.stream().reduce(Math::min) + .ifPresent(System.out::println); + + numbers.stream().reduce(Math::max) + .ifPresent(System.out::println); + + List strings = Arrays.asList("a", "b", "c"); + + strings.stream() + .filter(str -> !str.equals("b")) + .reduce((a, b) -> a + b) + .ifPresent(System.out::println); + } +}