MapleStory Cookie With Halo

☕ JAVA/☕ Class & Method

[JAVA][Stream]스트림 생성

뉴이 NUEY 2024. 12. 13. 17:59
반응형

 

Stream은 Collection 혹은 Array를 이용해 만들어집니다.

2024.12.13 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]스트림 stream (+특징)

각 변환방법들에 대해 알아보겠습니다.

 

Collection → Stream
.stream()

 

Collection인터페이스의 Stream() 메서드를 이용할 수 있다.

 


 

Array → Stream

 

Arrays.stream()

 

Stream클래스의 of()

  • 배열을 스트림으로 바꾸는 방법은 두가지가 있다.
    • Arrays. stream()
    • Stream.of()

※ Arrays.stream(array, fromIndex, endIndex)는 원하는 범위만 지정해 스트림을 만들 수 있다.

 

❗ 기본타입배열은 기본형스트림만 생성가능하다.
배열 타입에 따라 스트림 사용한다는 거 꼭 기억⭐

 


 

Random클래스의
ints() doubles(), longs() 이용해서
난수 스트림 만들기

 

💡 Random클래스의 ints(), doubles(), longs()는 난수. 무한으로 숫자를 생성할 수 있다.
만약 크기를 지정하지 않고 생성하면 이렇게 무한으로 숫자가 생성되는 것을 볼 수 있다.

 


 

난수 갯수 지정해서 만들기
intStream.limit( streamSize )
또는
new Random.ints( streamSize );

IntStream을 만든 후 limit()을 지정하거나
처음에 newRandom().ints(숫자)를 적어 범위를 지정할 수 도 있다. 결과는 같다.

 


 

난수의 범위 지정하기
Random.ints/doubles/longs(boundFrom, boundEnd)

💡 위 메서드에 API를 보면 알 수 있듯이 ints(), doubles(), longs()는 인수 갯수에 따라서 많이 다르다.
(보통 메서드들은 인수의 위치에 동일한 게 오는데, 이 메서드들은 좀 특이해서 눈여겨 볼만하다.)

() - 무한으로 난수생성.
(StreamSize) - 지정된 숫자만큼 난수 생성.
(boundFrom, boundEnd) - 지정된 범위만큼의 무한 난수 생성.
(StreamSize, boundFrom, boundEnd) - 지정된 범위 내에서 원하는 만큼 난수 생성.

 


 

특정 범위의 정수인 난수 스트림
IntStream.range(int begin, int end);

 

※ IntStream.rangeClosed(int begin, int end);
는 닫히는 범위까지의 정수를 생성한다. (일반적인 않아서 잘 사용하진 않을 것 같아 따로 적는다.)

 


 

Stream.iterate()/generate()에서
람다식 이용해 무한 스트림 생성하기

 

두 메서드 모두 무한 스트림이기 때문에 잘라서 사용해야 한다.

 

  • iterate(T seed, 람다식)
    • seed - 초기값.
    • seed가 람다식의 인수로 사용된다.

  •  generate(람다식)
    • seed가 없다.
    • 람다식만 실행된다.


 

폴더로 스트림 만들기
Files.list(Path path)

지정된 폴더 경로의 파일들을 리스트 형태로 볼 수 있다.

 


 

파일의 내용 스트림으로 만들기
Files.lines(Path path)

파일 내용을 String으로 하나씩 읽어들일 수 있다. log나 대량의 데이터를 읽을 때 유용하게 사용할 수 있다.
출력결과

 


 

비어있는 스트림 생성하기

 

자주 사용되진 않는다.

 


참조영상

 

반응형