자바의 정석 - 스트림 (2)

송용준·2023년 6월 7일

스트림 만들기 - 컬렉션

  • Collection인터페이스의 stream()으로 컬렉션을 스트림으로 변환
import java.util.*;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.stream.Stream;

class Java {
	public static void main(String[] args)  {	
		List<Integer> list = Arrays.asList(1,2,3,4,5);
		Stream<Integer> intStream = list.stream();	// list를 Stream으로 변환
		intStream.forEach(System.out::print);			// forEach() 최종연산
		
		// stream은 1회용. stream에 대해 최종연산을 수행하면 stream이 닫힌다.
		intStream = list.stream();		// list로부터 stream을 생성
		intStream.forEach(System.out::print);
	}
}

스트림 만들기 - 배열

  • 객체 배열로부터 스트림 생성하기

  • 기본형 배열로부터 스트림 생성하기

스트림 만들기 - 임의의 수

  • 난수를 요소로 갖는 스트림 생성하기

class Java {
	public static void main(String[] args)  {	
//		IntStream intStream =  new Random().ints();
		IntStream intStream =  new Random().ints(5,10);
		intStream
		.limit(10)	// 10개 자르기
		.forEach(System.out::println);
	}
}

스트림 만들기 - 특정 범위의 정수

  • 특정 범위의 정수를 요소로 갖는 스트림 생성하기(IntStream, LongStream)

스트림 만들기 - 람다식 iterate(), generate()

  • 람다식을 소스로 하는 스트림 생성하기

  • iterate()는 이전 요소를 seed로 해서 다음 요소를 계산한다.

  • generate()는 seed를 사용하지 않는다.

seed : 초기값

import java.util.stream.Stream;

class Java {
	public static void main(String[] args)  {	

		// iterate(T seed, UnaryOperator f)  단항 연산자. 하나를 넣으면 하나가 나온다.
		Stream<Integer> intStream =  Stream.iterate(1, n -> n + 2);
		intStream
		.limit(10)
		.forEach(System.out::println);
		
		// generate(Supplier s) : 주기만 하는것 입력x, 출력 o
		 Stream<Integer> oneStream =  Stream.generate(() -> 1);
		 oneStream
		 .limit(10)
		 .forEach(System.out::println);
	}
}

스트림 만들기 - 파일과 빈 스트림

  • 파일을 소스로 하는 스트림 생성하기

  • 비어있는 스트림 생성하기

profile
용용

0개의 댓글