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
복사