☕ Ex01.java

				List<Integer> int0To9 = new ArrayList<>(
                Arrays.asList(5, 2, 0, 8, 4, 1, 7, 9, 3, 6)
        );
        //  홀수만 골라낸 다음 정렬하여 "1, 3, 5..."와 같은 문자열로 만들어보기
				//  기존의 방식
        List<Integer> odds = new ArrayList<>();
        for (Integer i : int0To9) {
            if (i % 2 == 1) odds.add(i);
        }
        odds.sort(Integer::compare);

        List<String> oddsStrs = new ArrayList<>();
        for (Integer i : odds) {
            oddsStrs.add(String.valueOf(i));
        }
        String oddsStr = String.join(", ", oddsStrs);
				//  ⭐ 스트림을 사용한 방식
        //  각 라인이 무엇을 반환하는지 확인할 것
        String oddsStrStreamed = int0To9
                .stream()
                .filter(i -> i % 2 == 1)
                .sorted(Integer::compare)
                .map(String::valueOf)
                .collect(Collectors.joining(", "));

스트림 생성

☕ Ex02.java

				//  💡 배열로부터 생성
        Integer[] integerAry = {1, 2, 3, 4, 5};
        Stream<Integer> fromArray = Arrays.stream(integerAry);
        Object[] fromArray_Arr = fromArray.toArray();

        //  ⚠️ 런타임 에러
        //  - 스트림은 한 번 사용하면 끝 (흘러가버린 물)
        //Object[] ifReuse = fromArray.toArray();
				//  원시값의 배열로부터는 스트림의 클래스가 달라짐
        int[] intAry = {1, 2, 3, 4, 5};
        IntStream fromIntAry = Arrays.stream(intAry);
        int[] fromIntAry_Arr = fromIntAry.toArray();

        double[] dblAry = {1.1, 2.2, 3.3};
        DoubleStream fromDblAry = Arrays.stream(dblAry);
        double[] fromDblAry_Arr = fromDblAry.toArray();