TIL - IntStream

su·2023년 12월 8일
0

TIL

목록 보기
78/93
post-thumbnail

Stream

stream은 Java 8 부터 추가되었다.
Java의 컬렉션 데이터를 SQL 질의문 처럼 처리할 수 있도록 한다.
Iterator와 비슷한 역할이지만 람다식으로 처리 코드를 제공하여 코드가 좀 더 간결해지며
내부 반복자 사용으로 병렬처리가 쉽다는 점에서 차이가 있다.

import java.util.stream;

위처럼 stream 패키지를 import 해서 사용할 수 있다.

stream을 사용하면
간결하고 가독성이 좋아지며, 유연성이 좋고, 성능이 좋아진다는 특징이 있다.

IntStream

stream 중에서 기본형 stream이다.
기본 정수 요소의 열을 만들거나 병렬 집계 처리를 가능하게 한다.

🖥️ of()

안의 값들을 넣어 선언할 수 있다.

IntStream.of(1,2,3,4,5).forEach(System.out::print);

<결과>

12345

🖥️ range()

숫자의 범위를 표시하며, 끝 값을 포함하지 않는다.

IntStream.range(0, 10).forEach(System.out::print);

<결과>

0123456789

🖥️ rangeClosed()

숫자의 범위를 표시하며, 끝 값을 포함한다.

IntStream.range(0, 10).forEach(System.out::println);

<결과>

012345678910

🖥️ sum(), average()

sum()
합계를 계산한다.

System.out.print(IntStream.rangeClosed(0,10).sum());

<결과>

55

average()
평균을 계산한다.

System.out.print(IntStream.rangeClosed(0,10).average());

<결과>

OptionalDouble[5.0]

✍️ 위의 코드가 OptionalDouble로 감싸져서 출력되는데, 그냥 double 형태로 출력하려면?

double value = IntStream.rangeClosed(0,10).average().orElse(-1);
System.out.println(value);

double로 선언한 변수에 넣어주면 원하는대로 5.0 으로 출력할 수 있다.
끝에 orElse() 혹은 orElseThrow()를 붙어주어야 한다.

🖥️ max(), min()

max()
최대값을 구한다.

System.out.println(IntStream.rangeClosed(0,10).max());

<결과>

OptionalInt[10]

min()
최소값을 구한다.

System.out.println(IntStream.rangeClosed(0,10).min());

<결과>

OptionalInt[0];

✍️ 마찬가지로 그냥 Integer 형태로 출력하려면 ?

// 방법 1
int max = IntStream.rangeClosed(0,10).max().orElse(-1);
System.out.println(max);

// 방법2
System.out.println((int) IntStream.rangeClosed(0,10).min().orElse(-1));

변수를 선언해서 값을 넣어주거나, 앞에 (int)등을 붙여 형변환을 해줄 수도 있다.
끝에 orElse() 혹은 orElseThrow()을 붙여야 한다.

💫 참고
https://velog.io/@dmsgp8292/IntStream-.of-.range-.rangeClosed
https://ksr930.tistory.com/237
https://www.devkuma.com/docs/java/stream-api/int-stream/

profile
(❁´◡`❁)

0개의 댓글