연산 종류 설명
peek 중간 연산과정중 스트림에 영향을 끼치지는 않으면서 주어진 Consumer 작업을 실행
filter 중간 주어진 Predicate에 충족하는 요소만 남김
distinct 중간 중복되지 않는 요소들의 스트림을 반환
map 중간 주어진 Function에 따라 각 요소들을 변경
sorted 중간 요소들을 정렬
limit 중간 주어진 수 만큼의 요소들을 스트림으로 반환
skip 중간 앞에서 주어진 개수만큼의 요소를 제거
takeWhile / dropWhile 중간 주어진 Predicate 을 충족하는 동안 취하거나 건너뜀
forEach 최종 각 요소들에 주어진 Consumer 를 실행
count 최종 요소들의 개수를 반환
min / max 최종 주어진 Comparator 에 따라 최소/최대값을 반환
reduce 최종 주어진 초기값과 BinaryOperator 로 값들을 하나의 값으로 접어 나감

☕ Ex01.java

				IntStream
                .range(1, 100)
                .filter(i -> i % 2 == 0)
                //  💡 아래의 중간과정을 하나하나 주석해제해 볼 것
                //.skip(10)
                //.limit(10)
                //.map(i -> i * 10)
                .forEach(System.out::println);

filter

대지 92.png

map

대지 91.png

				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(", "));