본문 바로가기
부트캠프/코드스테이츠 백엔드부트캠프 43기

코드스테이츠 백엔드 부트캠프 43기 (18일차-스트림 회고)

by 고구마는호박고구마 2023. 1. 9.
스트림 요약 정리

 

 

처음 스트림을 배울때 스트림에 대해 어색하면서 여러 메서드들이 줄줄이 나오니깐 매우 어렵게 느껴졌었다. 하지만 문제를 하나하나 풀면서 메서드 하나하나 이해하려고하니 스트림은 정말로 편하고 가독성이 좋은 코드가 나올 수 있었다. 

 


스트림 - (생성, 중간 연산, 최종 연산)

 

중간 연산

 

 

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 변수를 리턴함 

 

 

 

댓글