Day27 - 반복자 스트림

2021. 3. 24. 16:28JAVA 공부

오늘은 대면 수업을 하는 날이네요 ~

오늘도 아침 일찍 일어나서, 씻고 아침을 먹고 학원을 갑시다

요즘 날씨가 점점 따뜻해지면서, 놀러다니고 싶은 날씨가 되었어요 ~

그래도 지금은 공부할 때니까 공부를 열심히 해 봅시다

 

 

이번에는 전날 마지막에 배웠던 반복자 스트림을 조금 더 알아보도록 해요

반복자 스트림

반복자 스트림의 기능들을 알아 보기 위해서, 먼저 List를 만들고 데이터를 추가해 줍시다

stream을 사용할 겁니다.

stream의 메서드들은 반환유형이 다시 stream 인 메서드 들이 있습니다.

"중간처리메서드" 라고 불러요

중간처리메서드에 계속 .(닷) 을 붙여서 계속 참조를 할 수 있습니다.

 

- distinct() -> 중복제거

forEach를 이용해서 출력을 해보면, 중복된 값을 제외하고 출력된 걸 확인할 수 있습니다.

 

- sorted() -> 정렬

중복을 제외한 후 오름차순으로 정렬된 걸 확인 할 수 있습니다.

 

- forEach(Consumer <? super type>) -> list의 길이(크기)만큼 반복

여기서 Consumer는 람다식 을 적용할 수 있는 함수적 인터페이스 입니다.

반환 x , 매개변수 o 인 유형이라고 생각하시면 됩니다.

 

- filter(Predicate<? super type>) -> 조건이 true 일 경우에만 반환 합니다

여기서 Predicate는 람다식 을 적용할 수 있는 함수적 인터페이스 입니다.

매개변수o, 반환은 boolean인 유형이라고 생각하시면 됩니다

중복을 제외한 후, 정렬을 하고, 짝수만 걸러낸 걸 확인 할 수 있습니다.

 

- map(Function<? super type, ? extends type> -> 매개변수를 받고 원하는 형태로 반환

여기서 Function는 람다식 을 적용할 수 있는 함수적 인터페이스 입니다.

매개변수o, 반환을 원하는 형태로 반환하는 유형이라고 생각하시면 됩니다

이제, 이렇게 여러가지의 메서드를 사용한 걸 다시 List로 바꿔 줄 수 있습니다.

collect를 사용하면 되는데, "최종처리 메서드" 라고 해요

 

그리고 Stream 은 집계 함수를 사용할 수 있는데, 예제를 한 번 봅시다

mapTo 를 사용해주면 mapToInt를 하면 IntStream이 됩니다 이런 Stream에는 집계함수가 잇습니다

- count() -> 개수 반환

- sum() -> 요소들의 합을 반환

- max() -> 요소들 중에 제일 큰 값 반환

OptionalInt 형을 반환하기 때문에 위와 같이 받아서 getAsInt() 를 사용하면 됩니다.

 

- average() -> 요소들의 평균을 반환 

OptionalDouble를 사용하지 않고, 바로 getAsDouble() 을 사용해서 double형으로 저장 해서 사용했습니다.

 

이렇게, 반복자 스트림에 대해서 좀 더 알아 보았습니다.

 

고생하셨습니다