2021. 3. 24. 16:28ㆍJAVA 공부
오늘은 대면 수업을 하는 날이네요 ~
오늘도 아침 일찍 일어나서, 씻고 아침을 먹고 학원을 갑시다
요즘 날씨가 점점 따뜻해지면서, 놀러다니고 싶은 날씨가 되었어요 ~
그래도 지금은 공부할 때니까 공부를 열심히 해 봅시다
이번에는 전날 마지막에 배웠던 반복자 스트림을 조금 더 알아보도록 해요
반복자 스트림
반복자 스트림의 기능들을 알아 보기 위해서, 먼저 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형으로 저장 해서 사용했습니다.
이렇게, 반복자 스트림에 대해서 좀 더 알아 보았습니다.
고생하셨습니다
'JAVA 공부' 카테고리의 다른 글
Day29 - Thread 쓰레드 (0) | 2021.03.26 |
---|---|
Day27 - 정규식 표현법 (0) | 2021.03.24 |
Day26 - 익명 객체(클래스) 내부클래스 와 람다식 , 반복자 스트림 (0) | 2021.03.23 |
Day26 - 파일 형식 지정 읽기 InputStreamReader (0) | 2021.03.23 |
Day25 - 폴더 생성, 폴더 삭제, FileWriter, FileReader, Buffered (0) | 2021.03.22 |