package com.stream9;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class MappingExample {
    public static void main(String[] args) {
        // 스트림으로 소수만 포함하는 새로운 리스트로 반환
        // 필터링된 새로운 리스트 출력
        List<Integer> primeList = IntStream.rangeClosed(1, 1000)
                .filter(x -> isPrime(x))         // 필터링
                .boxed()
                .collect(Collectors.toList());   // 리스트로 반환
        System.out.println(primeList);
        System.out.println();
        // 1부터 5까지의 IntStream 생성.. Double stream 타입으로 변환하고 출력하기
        IntStream
                .range(1, 6)
                .asDoubleStream()
                .forEach(v -> System.out.println(v));
        // 1부터 5까지의 IntStream 생성.. double 타입으로 변환하고 출력하기
        List<Double> doubleList = IntStream
                .range(1, 6)
                .asDoubleStream()
                .boxed()
                .collect(Collectors.toList());
        System.out.println(doubleList);
    }
    public static boolean isPrime(int num) {
        if (num <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}
Java
복사
package com.stream7;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamFilterExample {
    public static void main(String[] args) {
        List<String> nameList = Arrays.asList("우상혁", "황선우", "김우민", "서채현", "신유빈", "우상혁");
        // distinct로 중복이 제거되었다!
        nameList.stream()
                .distinct()
                .forEach(n -> System.out.print(n + ", "));
        System.out.println();
        // filter로 "우"가 들어간 이름만 나온다.
        nameList.stream()
                .filter(n -> n.contains("우"))
                .forEach(n -> System.out.print(n + ", "));
        System.out.println();
        System.out.println("=======================================");
        // distinct로 중복된 요소가 제거하고, filter로 "우"가 들어간 이름만 나오게 하기
//        nameList.stream()
//                .distinct()
//                .filter(n -> n.contains("우"))
//                .forEach(n -> System.out.print(n + ", "));
        // 리스트 형태로 출력됨
        List<String> filteredList = nameList
                .stream()
                .distinct()
                .filter(n -> n.contains("우"))
                .collect(Collectors.toList());      // 리스트 형태로 변환
        System.out.println(filteredList);
    }
}
Java
복사
package com.stream7;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class StreamFilterExample2 {
    public static void main(String[] args) {
        // 1부터 1000까지 숫자 생성
        IntStream intStream = IntStream.rangeClosed(1, 1000);
        intStream.forEach(System.out::println);
        // 스트림으로 소수만 포함하는 새로운 리스트로 반환
        // 필터링된 새로운 리스트 출력
        IntStream
                .rangeClosed(1, 1000)
                .filter(x -> isPrime(x))
                .forEach(i -> System.out.print(i + ", "));
    }
    public static boolean isPrime(int num) {
        if (num <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
            return true;
        }
        return false;
    }
}
Java
복사

