이거만 하면 자바는 바이바이
stream 메소드 정리하면서 람다식도 다시한번 더 정리 해 보자!!
출력할 때
stream 메소드에서 반복문을 처리하는 foreach문이 있는데 출력 할 때도 이 반복을 이용할 수 있음!!
출력할 때 주로 System.out.println 를 많이 이용 했는데 foreach 문을 사용하면
~~~ .forEach(System.out::println) 로 쉽게 출력이 가능 해 짐
public class Stream02 {
public static void main(String[] args) {
System.out.println("[스트림 객체의 주요 메소드]");
//map(): 스트림의 각 요소를 람다식을 적용 해 변경하는 함수
System.out.println("1.map()함수");
IntStream stream =IntStream.rangeClosed(1,5); //(1,2,3,4,5가 있음)
stream.map(e->e*e).forEach(x->System.out.println(x)); // foreach 기능 다시 공부!!!
//스트림은 한번 써서 이제 닫힘 다시 새로운 stream 생성 해야 함
//reduce(): 스트림의 요소를 줄이는 함수
//ex)3x3 표에 sum 을 하면 결과가 1개 나옴 이런것도 reduce임
System.out.println("2.reduce()함수 ");
System.out.println(IntStream.range(1,6).reduce((e1,e2)->e1+e2)); //OptionalInt[15]
System.out.println(IntStream.range(1,6).reduce((e1,e2)->e1+e2).getAsInt()); // getAsInt()는 숫자만 나오게 해줌
System.out.println("3.limit() 함수");
// IntStream.rangeClosed(1,5).limit(3).forEach(x->System.out.println(x)); //출력 시 이거보단
IntStream.rangeClosed(1,5).limit(3).forEach(System.out::println); // 이렇게 씀!
//skip() 스트림의 최초 요소부터 설정한 요소 수까지 제외하고 새로운 stream 반환
System.out.println("4.skip() 함수");
IntStream.rangeClosed(1,5).skip(3).forEach(System.out::println); // 1~3 스킵!
System.out.println("5.distinct() 함수"); // 중복요소를 제거한다
Arrays.asList(1,2,5,4,2,3,2,5,1,1).stream().distinct().sorted()
.forEach(System.out::println);
//filter() : 조건을 만족하는 요소만 스트림 반환
System.out.println("6.filter() 함수");
IntStream.rangeClosed(1,10).filter(x->x%2==0).forEach(System.out::println); // 1~10까지 짝수만
System.out.println("7.count() 함수"); // 개수 세기
System.out.println(IntStream.rangeClosed(9,999).filter(x->x%2!=0).count());//9~999 중 홀수인 숫자의 개수
System.out.println("8.sum() 함수"); // 총합 구하기
System.out.println(IntStream.rangeClosed(1,10).filter(x->x%2 ==0).sum());
System.out.println("9.max() 함수");
System.out.println(IntStream.rangeClosed(1,10).max().getAsInt());
System.out.println("10.min() 함수");
System.out.println(IntStream.rangeClosed(1,10).min().getAsInt());
System.out.println("11.findAny() 함수"); // 설정한 값 사이에서 랜덤하게 출력
System.out.println(IntStream.rangeClosed(2,1000).findAny().getAsInt());
System.out.println("12.findfirst() 함수"); // 첫번째만 출력
System.out.println(IntStream.rangeClosed(1,10).findAny().getAsInt());
//문제1~100 까지 숫자 중 50 이상 이고 홀수 이면서 5의배수인 수의 합을 구하라
// 람다식과 스트림만 이용
System.out.println("[스트림 미 사용]");
int sum = 0;
for(int i=0; i<=100 ; i++) {
if(i>=50 && i%5 ==0 && i%2 !=0) sum += i;
}
System.out.println(sum);
System.out.println("[스트림 사용]");
System.out.println(IntStream.rangeClosed(1,100).filter(x->x>=50 && x%2!=0 && x%5==0).sum());
System.out.println(IntStream.rangeClosed(1,100).skip(49).filter(x->x%2!=0 && x%5==0).sum());//방법2
System.out.println(IntStream.rangeClosed(1,100).filter(x->x>=50).filter(x->x%2!=0).filter(x->x%5==0).sum());//방법3
}//////////main
}///class
'학원 > JDBC' 카테고리의 다른 글
10/25 28-8 Stream (0) | 2022.10.25 |
---|---|
10/25 28-7 lambda (1) | 2022.10.25 |
10/25 28-6 람다식 과 Stream 이론 정리 (1) | 2022.10.25 |
10/25 28-5 Generic 코딩으로 알아보기 (0) | 2022.10.25 |
10/25 28-4 제너릭(Generic) 이론정리 (0) | 2022.10.25 |