JAVA Stream 만들기

강정우·2022년 11월 17일
0

JAVA

목록 보기
26/31
post-thumbnail

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) // 만약에 3~8까지다 그럼 3,4,5,6,7만 들어감 ㅇㅇ
  • 위 코드를 토대로 예제) 참조형
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, LongStream
IntStream 변수명 = IntStream.range(시작숫자, 끝 숫자); // 끝 숫자 안 포함 범위
IntStream 변수명 = IntStream.rangeClosed(시작숫자, 끝 숫자); // 끝 숫자 포함 범위

5. 람다식으로 stream 만듦

  • iterate(), generate()
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() // BufferedReader클래스의 매서드
  • 비어있는 stream 생성
Stream emptyStream = Stream.empty();
long count = emptyStream.count();
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글