스트림 요약 정리
처음 스트림을 배울때 스트림에 대해 어색하면서 여러 메서드들이 줄줄이 나오니깐 매우 어렵게 느껴졌었다. 하지만 문제를 하나하나 풀면서 메서드 하나하나 이해하려고하니 스트림은 정말로 편하고 가독성이 좋은 코드가 나올 수 있었다.
스트림 - (생성, 중간 연산, 최종 연산)
중간 연산
distinct() - 중복된 값을 제거 해준다.
sorted() - 값을 사전순으로 정렬 해준다.
map()
- 스트림에 들어있는 변수를 바꾸는 기능 (스트림 자체에 있는 변수가 바뀜)
- Ex) map( x - > x*2) x의 값들이 2로 곱해진 값들로 변함
- 스트림에 "김가나", "박가나" 의 값들이 있다면 // 밑에 filter의 예도 있음
- map (m -> m.substring(0, 1)) -> 스트림 자체에 있는 변수의 값이 "김", "박" 으로 바뀜
mapToInt()
- map이랑 비슷한 기능이다. Integer타입의 리스트를 받았다면 그 값을 마지막에 IntStream로 변화해주는 기능이다. ->왜? 집계함수(max, average) 의 숫자처리 메서드는 IntStream에서 정의되어있기 떄문
- Ex) mapToInt( x -> x) int 값으로 바뀜
- mapToDouble, 등 다양하게 있음
String[] strArr = {"codestates", "java", "backend", "programing"};
int max = Arrays.stream(strArr).mapToInt(n->n.length()).max().getAsInt();
//programming 오타...
1. Arrays.stream(strArr)
2. Array.stream(strArr).mapToint( n -> n.length())
3. Array.stream(strArr).mapToint( n -> n.length()).max()
4. Array.stream(strArr).mapToint( n -> n.length()).max().getAsInt()
-> int 나 Integer 타입으로 받기 위해서.
filter()
- 어떠한 값을 거를때 사용한다. (스트림 자체에 있는 변수가 바뀌지 않음)
- 스트림에 2,3,4,5 의 값들이 있다면 filter( m -> m%2==0 ) -> 2,4 만 걸러지는 기능 -
- 스트림에 "김가나", "박가나" 의 값들이 있다면 성이 김씨인 사람만 거르고 싶을때
filter (m -> m.substring(0, 1).equals("김")) -> "김가나"만 걸러지게 됨 -> substring으로 자르게 되어도 자체에 있는 변수가 바뀌지는 않음.
첫글자를 찾고 거를때 던 간편한 메서드 -> filter( m -> m.startsWith("김")) "김가나"만 걸러지게 됨 // String타입만 가능
최종 연산
sum() - long 타입
count() - long 타입
max() - 최대값 출력 OptionaInt 타입 -> Integer, int 로 받으려면 마지막에 getAsInt() 메서드로 매핑이 필요.
min()
average()
orElse(0.0) - null 값을 처리 해줌 ( 진짜 0값인지 아니면 없어서 0인지를 처리 )
toArray(String[]::new) - 스트림을 배열로 리턴할 경우
collect(Collectors.toList()) - 컬렉터 리턴할 경우
Stream.concat(스트림 변수1, 스트림 변수2) // 스트림1, 스트림2를 붙여서 새로운 Stream 변수를 리턴함
'부트캠프 > 코드스테이츠 백엔드부트캠프 43기' 카테고리의 다른 글
코드스테이츠 백엔드 부트캠프 43기 (28일차-코딩테스트) (0) | 2023.01.25 |
---|---|
코드스테이츠 백엔드 부트캠프 43기 (19,20일차-Section1 회고) (0) | 2023.01.11 |
코드스테이츠 백엔드 부트캠프 43기 (16,17일차-자바 심화 회고) (0) | 2023.01.07 |
코드스테이츠 백엔드 부트캠프 43기 (14,15일차-컬렉션 회고) (2) | 2023.01.05 |
코드스테이츠 백엔드 부트캠프 43기 (13일차-버거퀸 프로젝트 회고) (2) | 2023.01.02 |
댓글