https://programmers.co.kr/learn/challenge_codes/89
나누어 떨어지는 숫자 배열 Level 1
roeuihyun 이 대단한 분이 한줄 코딩을 하셨다.
...
return Arrays.stream(array).filter(factor -> factor % divisor == 0).toArray();
...
처음 보는 자바 문법이 나왔다. stream? filter?
그래서 하나하나 알아보았다.
stream ?
https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
api를 찾아보았는데 stream은 순차, 병렬 집합 연산을 지원하는 시퀸스라고 한다.
단순히 보자면 이 stream을 통해 연산을 쉽게 할 수 있다는 것인데 이 때문에 한 줄 코딩이 가능 한 것이다.
filter 는 괄호안의 내용으로 필터링을 하겠다고 이해하면 편할 것이다.
factor의 요소들을 ( factor % divisor ==0 ) 에 맞는 것들만 필터링 하는 것이다.
여기서 factor는 배열의 각 원소를 순차적으로 불러 온 다음 stream을 toArray()메소드를 통해 다시 오브젝트 array 를 반환하여 정답을 호출할 수 있었다.
이 람다식을 이용한 간단한 코드가 있다.
다음 두 코딩은 같은 내용을 출력한다.
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
IntStream.range(0, 10).forEach((int value) -> System.out.println(value));
Stream을 통해 한줄 코딩이 쉽게 가능한 것을 알 수 있다.
'프로그래밍 > 알고리즘(자바)' 카테고리의 다른 글
평균구하기 Level 1 : For each문 (0) | 2018.05.06 |
---|---|
문자열 내림차순으로 배치하기 Level 1 #Collections,join,sort,asList,reverse (0) | 2018.05.06 |
짝수와 홀수 Level 1 (0) | 2018.05.05 |
행렬의 덧셈 Level 1 (0) | 2018.05.05 |
서울에서김서방찾기 Level 1 (0) | 2018.05.05 |