연산 | 종류 | 설명 |
---|---|---|
peek |
중간 | 연산과정중 스트림에 영향을 끼치지는 않으면서 주어진 Consumer 작업을 실행 |
filter |
중간 | 주어진 Predicate에 충족하는 요소만 남김 |
distinct |
중간 | 중복되지 않는 요소들의 스트림을 반환 |
map |
중간 | 주어진 Function에 따라 각 요소들을 변경 |
sorted |
중간 | 요소들을 정렬 |
limit |
중간 | 주어진 수 만큼의 요소들을 스트림으로 반환 |
skip |
중간 | 앞에서 주어진 개수만큼의 요소를 제거 |
takeWhile / dropWhile |
중간 | 주어진 Predicate 을 충족하는 동안 취하거나 건너뜀 |
forEach |
최종 | 각 요소들에 주어진 Consumer 를 실행 |
count |
최종 | 요소들의 개수를 반환 |
min / max |
최종 | 주어진 Comparator 에 따라 최소/최대값을 반환 |
reduce |
최종 | 주어진 초기값과 BinaryOperator 로 값들을 하나의 값으로 접어 나감 |
Optional
관련 연산자들 - 이후 배울 것☕ Ex01.java
IntStream
.range(1, 100)
.filter(i -> i % 2 == 0)
// 💡 아래의 중간과정을 하나하나 주석해제해 볼 것
//.skip(10)
//.limit(10)
//.map(i -> i * 10)
.forEach(System.out::println);
filter
map
System.out.println("\\n- - - - -\\n");
String str1 = "Hello World! Welcome to the world of Java~";
str1.chars().forEach(System.out::println);
System.out.println("\\n- - - - -\\n");
char str1MaxChar = (char) str1.chars()
.max() // OptionalInt 반환 - 이후 배울 것
//.min() // 변경해 볼 것
.getAsInt();
// 사용되는 모든 알파벳 문자들을 정렬하여 프린트
str1.chars()
//.sorted()
//.distinct()
//.filter(i -> (i >= 'A' && i <= 'Z') || (i >= 'a' && i <= 'z'))
.forEach(i -> System.out.print((char) i));
System.out.println("\\n- - - - -\\n");
// 대소문자 구분 없이 중복 제거한 뒤 정렬하고 쉼표로 구분
String fromStr1 = str1.chars().boxed()
// 💡 boxed를 사용하여 Stream<Integer>으로 변환
// 요소를 다른 타입으로 바꾸려면 Stream<T>을 사용해야 함
.map(i -> String.valueOf((char) i.intValue()))
//.map(String::toUpperCase)
//.filter(s -> Character.isLetter(s.charAt(0)))
//.sorted()
//.distinct()
.collect(Collectors.joining(", "));