실례 jdk8의 Stream
10753 단어 javaSE 에세이
Stream의 의미
컬렉션(Collection) 객체 기능이 향상되었으며, 컬렉션 객체에 대해 매우 편리하고 효율적인 컬렉션 작업에 집중Lambda 표현식으로 프로그래밍 효율성 및 프로그램 읽기 용이성 대폭 향상함수식 호출, 체인식 호출의 충분한 발휘함수식 언어+다핵시대 종합영향의 산물
Stream 둘러보기
1. 홀수 흐름 만들기
/**
*
*
* @param maxLength
* @return
*/
public static Stream<int[]> getGGStream(int maxLength) {
return IntStream.rangeClosed(5, maxLength)
.boxed()
.flatMap(c -> IntStream.range(1, c)
.mapToObj(a -> new double[]{a, Math.sqrt(c * c - a * a), c})
.filter(t -> t[1] % 1 == 0 && t[0] < t[1]))
.map(d -> new int[]{(int) d[0], (int) d[1], (int) d[2]});
}
2. 피보나치 수열 흐름 만들기
/**
*
* @return
*/
public static Stream<Integer> getFiboStream() {
return Stream.iterate(new int[]{0, 1}, t -> new int[]{t[1], t[0] + t[1]})
.map(t -> t[0]);
}
3. 표준 질량 수류 만들기
/**
*
* @return
*/
public static Stream<Integer> getPrimeStream() {
return Stream.iterate(2, v -> v == 2 ? ++v : v + 2)
.filter(MyStream::isPrime);
}
/**
*
* @param candidate
* @return true, false
*/
public static boolean isPrime(int candidate) {
return IntStream.rangeClosed(2, (int) Math.sqrt(candidate))
.filter(p -> p == 2 || p % 2 == 1)
.noneMatch(p -> candidate % p == 0);
}