Hello

Java 스트림 만들기

by 볼빵빵오춘기

스트림 만들기 - 컬렉션

Collection 인터페이스의 stream()으로 컬렉션을 스트림으로 변환한다.

 

스트림 만들기 - 배열

  • 객체 배열로부터 스트림 생성하기
  • 기본형 배열로부터 스트림 생성하기 (만들어진 배열이 Stream이다.)

 

스트림 만들기 - 임의의 수

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

더보기

*Random클래스 : 지정된 범위의 난수를 요소로 갖는 스트림을 생성하는 메서드

 

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

특정 범위의 정수를 요소로 갖는 스트림 생성하기

 

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

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

⇒ 무한 스트림 따라서 limit같은걸로 잘라 줘야함

  • iterate()는 이전 요소를 seed로 해서 다음 요소를 계산한다.
  • generate()는 seed를 사용하지 않는다.

 

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

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

 

예제 코드

예제 코드 - 컬렉션

더보기
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

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

		List<Integer> list = Arrays.asList(1,2,3,4,5);
		Stream<Integer> intStream = list.stream();

		intStream.forEach(System.out::print);	
		
	}
	
}

⇒ 정상작동 확인 후 코드 아래에 ‘intStream.forEach(System.out::print);’ 한 번 더 추가하면 에러난다.

⇒ why? stream은 1회용이기 때문이다!

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

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

		List<Integer> list = Arrays.asList(1,2,3,4,5);
		Stream<Integer> intStream = list.stream();

		intStream.forEach(System.out::print);	
		intStream.forEach(System.out::print);		
	}
	
}

⇒ 스트림 closed. 다시 한 번 추가해서 사용하기 위해서는 ‘Stream<Integer> intStream = list.stream();’를 한 번 더 하고 돌리면 된다.

예제 코드 - 배열

더보기
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class Try {
	
	public static void main(String[] args) {
		
		
		Stream<String> strStream = Stream.of("a","b","c");
		strStream.forEach(System.out::print);
		System.out.println();
		 
		Stream<String> strStream2 = Stream.of(new String[] {"a","b","c"});
		strStream2.forEach(System.out::print);
		System.out.println();
		
		String[] strArr = new String[] {"a","b","c"};
		Stream<String> strStream3 = Stream.of(strArr);
		strStream3.forEach(System.out::print);
		System.out.println();
		
		
		Stream<String> strStream4 = Arrays.stream(strArr);
		strStream4.forEach(System.out::print);
		System.out.println();
		
	}
	
}

예제 코드 - 임의의 수

더보기
import java.util.Random;
import java.util.stream.IntStream;

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

		 IntStream intStream = new Random().ints(); // 무한스트림
		 intStream.limit(5).forEach(System.out::println);
		
	}
	
}

⇒ 난수 5개가 임의로 나온다.

if. limit()이 없다면 무한스트림이라 끝이 없이 숫자가 나온다.

why? 무한스트림이기때문에 몇 개 나올지 지정해주기!

limit을 쓰지 않을려면 ints()함수에 숫자 넣어주기 ints(5) 이런식으로

범위를 지정해주고 싶다면 ints(5,10)이런식으로 넣어주면 5≤ x <10 숫자가 나온다.

 

밑에 코드 돌려보면 느낌이 옴

   	IntStream intStream = new Random().ints(5); // 무한스트림
   	intStream.forEach(System.out::println);
   	IntStream intStream = new Random().ints(5,10); // 무한스트림
   	intStream.limit(5).forEach(System.out::println);
   	IntStream intStream = new Random().ints(7,5,10); // 무한스트림
   	intStream.forEach(System.out::println);

예제 코드 - 람다식 iterate(), generate()

더보기
import java.util.stream.Stream;

public class Try {
	
	public static void main(String[] args) {
		// iterate(T seed, UnaryOperator f) 단항 연산자 
		Stream<Integer> intStream = Stream.iterate(0, n-> n+2);
	 	intStream.limit(10).forEach(System.out::println);
		
		// generate(Supplier s) : 주기만 하는 것 입력x, 출력O 
		Stream<Integer> oneStream = Stream.generate(()->1);
		oneStream.forEach(System.out::println);
	}
	
}

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기