1. 컬렉션으로 stream 만듦
- Collection 인터페이스에
stream()
매서드가 있는데 이 함수는 컬렉션을 스트림을 만들어서 반환해줌.
List<Integer> list = Arrays.asList(1,2,3,4,5);
Stream<Integer> intStream = list.stream();
intStream.forEach(System.out::print);
2. 배열로 stream 만듦
Stream<T> Stream.of(T... values)
Stream<T> Stream.of(T[])
Stream<T> Arrays.stream(T[])
Stream<T> Arrays.stream(T[] array, int startInclusive, int endExclusive)
Stream<String> strStream = Stream.of("a","b","c");
Stream<String> strStream = Stream.of(new String[]{"a","b","c"});
Stream<String> strStream = Arrays.stream(new String[]{"a","b","c"});
Stream<String> strStream = Arrays.stream(new String[]{"a","b","c"}, 0, 3);
IntStream IntStream.of(int... values);
IntStream IntStream.of(int[]);
IntStream Arrays.stream(int[]);
IntStream Arrays.stream(int[] array, int startInclusive, int endExclusive);
3. 임의의 수로 stream 만듦
IntStreamintStream = new Random().init();
intStream.limit(5).forEach(System.out::pringln);
IntStream intstream = new Random().ints(5;
- 지정된 범위늬 난수를 요소로 갖는 스트림을 생성하는 method
IntStream ints(int begin, int end)
LongStream longs(long begin, long end)
DoubleStream doubles(double begin, double end)
IntStream ints(long streamSize, int begin, int end)
LongStream longs(long streamSize, long begin, long end)
DoubleStream doubles(long streamSize, double begin, double end)
4. 특정 범우의 정수로 stream 만듦
IntStream 변수명 = IntStream.range(시작숫자, 끝 숫자);
IntStream 변수명 = IntStream.rangeClosed(시작숫자, 끝 숫자);
5. 람다식으로 stream 만듦
static<T> Stream<T> iterate(T seed, UnaryOperator<T> f)
static<T> Stream<T> generate(Supplier<T> s)
- 위 코드에서
T seed
는 초기값을 의미한다. UnaryOperator : 단항연산자 즉, 입력값 1 출력값 1
- iterate는 이전 요소를 seed로 해서 다음 요소를 계산한다. 그런데 당연하게도 범위가 없으므로 무한 스트림이 되어버림
- generate는 주기만 하는 것 : 입력 X, 출력 O
6. 파일과 빈 stream 만듦
- 파일을 소스로 하는 스트림 생성
.lines()
=> 파일의 내용을 한 줄씩 읽어서 stream으로 만듦 log파일 같은거 처리할 때
Stream<Path> Files.list(파일 경로)
Stream<String> Files.lines(경로)
Stream<String> Files.lines(경로, Charset cs)
Stream<String> lines()
Stream emptyStream = Stream.empty();
long count = emptyStream.count();