문제
개념
- stream (스트림)이란?
컬렉션의 저장 요소를 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 반복자
*람다식 : 식별자 없이 실행 가능한 익명의 함수 표현식
- 특징
1. 람다식으로 요소 처리 코드를 제공
2. 내부 반복자를 사용한 병렬철
3. 중간 처리와 최종처리를 할 수 있다.
- stream얻기
1. 컬렉션으로부터 stream 얻기
stream = studentList.stream();
2. 배열로부터 stream 얻기
stream = Arrays.stream(strArray);
3. 숫자 범위로부터 stream 얻기
stream = IntStream.rangeClosed(1,100);
- stream 사용하기
1. 중간처리 : 필터링, 매핑, 정렬, 루핑
- 필터링
distinct()
filter()
- 매핑
flatMapXXX()
mapXXX()
mapToInt/ToDouble
- 정렬
sorted()
- 루핑
peek() : 반복, 이후 반드시 최종처리 메소드가 호출되어야 함
2. 최종처리 : 루핑, 매칭, 기본 집계
- 루핑
forEach() 반복 : peek()와 같은 역할이지만 최종처리 차이가 있음
- 매칭
allMatch : 모두 만족
anyMatch : 하나라도 만족
nonMatch : 모두 만족하지 않음
위 3가지 매칭 모두 boolean 타입
-기본집계
sum
count
average
max
min
풀이
class Solution {
public int[] solution(int n) {
int[] answer = new int[(n+1)/2]; //홀수입력값 때문에 (n+1)/2
for (int i =1; i<=n; i++){
if(i%2==1){
answer[i/2] = i; // 홀수값들이 순서대로 들어갈 수 있도록
}
}
return answer;
}
}
아래 코드는 다른 분이 풀이하신거다... 내가 코드 짠 거랑 비교해보면 정말 짧다.. 아직 갈 길이 굉장히 많이 남았다 라는 생각이 든다
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.rangeClosed(0, n).filter(value -> value % 2 == 1).toArray();
}
}
'개인공부 > Java 자바' 카테고리의 다른 글
[프로그래머스/자바Java] 최빈값 구하기 (0) | 2022.11.23 |
---|---|
[프로그래머스/자바Java] 중앙값 구하기 (0) | 2022.11.22 |
[프로그래머스 / 자바Java] 나머지 구하기 (0) | 2022.11.22 |
[프로그래머스/자바java] 배열 두 배 만들기 (0) | 2022.11.21 |
[프로그래머스 /자바java] 분수의 덧셈 (0) | 2022.11.21 |