2015년 9월 8일 화요일

[자바8강좌,int스트림]JAVA8, IntStream, of, range, rangeClosed, filter

[자바8강좌,int스트림]JAVA8, IntStream, of, range, rangeClosed, filter

자바8에 추가된 IntStream은 원시데이터형 int를 스트림으로 다룰수 있도록 해주는데
java.util.stream 패키지에는 스트림관련 API들이 있다.



이번 강좌에서는 자주 사용되는 int형을 위한 스트림을 살펴보자.


1. IntStream 생성하기.

IntStream.of(1,2,3,4,5);    //1,2,3,4,5에 대한 int 스트림 생성, of의 인자는 배열등도 가능
IntStream.range(1,5);           //1,2,3,4에 대한 int 스트임 생성
IntStream.rangeClosed(1,5); //1,2,3,4,5에 대한 int 스트임 생성


2. iterator 함수

IntStream.iterator(0, i -> i + 2).limit(4);  //0, 2, 4, 6에 대한 스트림 생성, 4는 4개의 요소라는 의미



3. anyMatch 함수

IntStream.range(1, 5).anyMatch(i -> i % 2 == 0);  // true, 1,2,3,4중 짝수인 것이 하나라도 있으면 참


4. allMatch 함수

IntStream.range(1, 5).allMatch(i -> i % 2 == 0);  // false, 1,2,3,4모두가 짝수면 참


5. noneMatch 함수

IntStream.range(1, 5).allMatch(i -> i % 2 == 0);  // false, 1,2,3,4 모두가 짝수가 아니면 참


6. filter 함수

IntStream.range(1,5).filter(i -> i % 2 == 1) //1, 3
IntStream.range(1,5).filter(i -> i % 2 == 1).allMatch(i -> i % 2 ==1) // true
IntStream.range(1,5).filter(i -> i % 2 == 1).noneMatch(i -> i % 2 ==1) // false


7. max, min 함수

IntStream.range(1,5).max().getAsInt();  // 4
IntStream.range(1,5).min().getAsInt();  // 1


9. 이번에는 간단히 IntStream을 이용하여 예제를 만들어 보자.


package ojc;

import java.util.stream.IntStream;

public class IntStreamTest1 {
static int sum = 0;
public static void main(String[] args) {
// 1부터 10까지의 수를 출력해보자.
IntStream stream = IntStream.rangeClosed(1, 10);
stream.forEach(i -> System.out.println(i));   //람다식을 이용하여 출력
stream = IntStream.rangeClosed(1, 10);
stream.forEach(System.out::println);          //더블콜론 연산자를 이용하여 출력
//1부터 100까지의 합을 구해보자.
stream = IntStream.rangeClosed(1, 10);
stream.forEach(i -> sum += i);
System.out.println("1부터 10까지 합 : " + sum);
//배열의 합을 구해보자.
int[] arr = {1,2,3,4,5,6,7,8, 9,10};
System.out.println("1부터 10까지의 합 : " + IntStream.of(arr).sum());
//1부터 10까지의 수중 홀수의 합을 구해보자.
int[] arr1 = {1,2,3,4,5,6,7,8, 9,10};
IntStream stream1 = IntStream.of(arr1);
sum = stream1.filter(i -> i % 2 == 1).sum();
System.out.println("1부터 10까지 수중 홀수의 합 : " + sum);
}
}



[결과]

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
1부터 10까지 합 : 55
1부터 10까지의 합 : 55
1부터 10까지 수중 홀수의 합 : 25


댓글 없음:

댓글 쓰기