중간연산은 반환타입이 Stream 이므로 연속해서 연산가능.
최종연산하면 스트림 닫힘.
- distinct() 주의점:
병렬스트림 : 데이터들을 가지고 있을 때 여러개의 스레드로 나누어서 동시에 필터링 진행
컬렉션 참조 변수.stream() 연산 시 병렬스트림으로 받을 지 단일스트림으로 받을 지 선택가능 -> 만약 병렬스트림으로 받고 distinct() 연산시 성능에 문제 생길 수 있음 ( distinct는 중복제거연산인데 중복을 제거하려면 어차피 전체를 검색해야하기 때문에 )
sorted() 쓰려면 무조건 Comparable 인터페이스 상속받고, compareTo() 메서드를 재정의 해야한다.
만약,
compareTo 메서드를 재정의 하여 한 번 사용하였는데 다른 기준으로도 정렬하고 싶다.
-> sorted는 인자가 없는 sorted()와 sorted(Comparator.comparing(Customer::getName)) 처럼 인자가 있는 두가지이다.
-> 뒤 처럼 새로운 정렬조건을 넣어서 정렬한다..
filter 나 sorted는 스트림객체로 반환함. 위의 경우 Stream<Customer>
원하는 속성으로만 Stream으로 꺼내고 싶은 경우 -> map . 위의 경우 이름만 가져옴.
이 때 메서드레퍼런스형식(Customer::getName) 대신 람다식으로 작성해도됨.
# 최종연산
forEach, collect 많이 씀
본 자료를 참고하였습니다.
꾸준히 다시보자.
1. 220725
2. 220814
3. 220910
'Java, Spring > JAVA 기초 정리' 카테고리의 다른 글
5-7강 스트림의 이해와 활용 (0) | 2022.07.24 |
---|---|
5-5강 람다 표현식의 이해 (0) | 2022.07.23 |
5-2강 함수형 프로그래밍의 이해 (0) | 2022.07.23 |
5-1강 Java 8 개요 (0) | 2022.07.23 |
4-11강 Map 인터페이스와 Iterator 인터페이스의 이해 (0) | 2022.07.23 |