rxjava : stream

This commit is contained in:
haerong22
2022-03-16 17:10:30 +09:00
parent fb89148a66
commit 81e90a39f8
6 changed files with 143 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
package _03_stream;
import java.util.List;
public class StreamEx_06 {
public static void main(String[] args) {
List<Dish> vegetarianMenu = Dish.menu.stream()
.filter(Dish::isVegetarian)
.toList();
System.out.println("vegetarianMenu = " + vegetarianMenu);
}
}

View File

@@ -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<Integer> list = Arrays.asList(1, 2, 1, 3, 3, 2, 4);
list.stream()
.filter(i -> i % 2 == 0)
.distinct()
.forEach(System.out::println);
}
}

View File

@@ -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<Dish> dishes = Dish.menu.stream()
.filter(dish -> dish.getCalories() > 300)
.skip(2)
.toList();
System.out.println("dishes = " + dishes);
}
}

View File

@@ -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<Integer> result = Dish.menu.stream()
.map(Dish::getName)// Dish -> String
.map(String::length)// String -> Integer
.toList();
System.out.println("result = " + result);
// flatMap
List<String> words = Arrays.asList("Hello", "world");
List<String> uniqueCharacter = words.stream()
.map(word -> word.split("")) // String -> String[] 이 되므로 Stream<String[]>
.flatMap(Arrays::stream) // Stream<String>
.distinct()
.toList();
System.out.println("uniqueCharacter = " + uniqueCharacter);
}
}

View File

@@ -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<Dish> 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);
}
}

View File

@@ -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<Integer> 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<String> strings = Arrays.asList("a", "b", "c");
strings.stream()
.filter(str -> !str.equals("b"))
.reduce((a, b) -> a + b)
.ifPresent(System.out::println);
}
}