범용적으로 사용되는 관수형 인터페이스
Java.util.function package
자바8은 범용적으로 사용되는 관수형 인터페이스는 java,util.function 패키지를 용의하고 있다.
java8로부터 추가된 새로운 메소드로 관수형인터페이스를 인수로 가지는 메소드의 대부분은
인수에 이 패키지를 용의한 관수형 인터페이스를 사용하고 있다.
람다식이 활약하는 Stream API
Java 8에서는 새롭게 도입되는 기능 중 함수형 인터페이스를 사용하여 작업을 수행하며이 추가되어 있습니다. 그 중에서도 특히 주목을 받고있는 것이 배열이나 Collection 등의 집합체를 취급하는 「Stream API "입니다.
Stream API는 집합체를 취급 Stream 인스턴스에 대해 용도에 맞는 몇 가지 메소드를 추가하고 있고, 최종 메소드로 집계 처리 결과를 가져옵니다.
예를 들어, 다음 예제에서는 [1]에서 요소를 "아"로 시작하는 것으로, 조리개 [2] 문자열 비교하고 최대의 것을 결과로 얻을 수 있습니다.
- public static void main ( String [] args ) {
- String [] values = { "레드" , "아오" , "노란색" , "녹색" , "오렌지" };
- Stream < String > stream = Arrays . stream ( values );
- String result = stream . filter ( value -> value . contains ( "아" )) // [1]
- . max (( v1 , v2 ) -> v1 . compareTo ( v2 )) // [2]
- . get ();
- System . out . println ( "result =" + result );
- }
이 메소드를 추가해 나갈 구현 방법 (파이프 라인 처리의 구현 방법)에 거부감을 갖는 사람이 있을지도 모릅니다. 그러나 실제 처리 방법에 은폐되어 있기 때문에 향후 Stream API 처리가 개선 된 때에는 Java 버전을 업하면 Stream API를 사용하여 구현 한 부분의 개선이 할 수 있다는 장점도 있습니다.
또한 최근의 하드웨어면에서의 경향으로 CPU가 멀티 코어를 가지고 각 코어에서 병렬 처리를 수행하도록지고 있습니다. 이에 따라 Stream API는 병렬 처리의 구현을 쉽게 할 수있는 구조가 준비되어 있습니다.
'Web Dev > JAVA' 카테고리의 다른 글
제네릭 , 콜렉션프레임워크 (2) -코드 (0) | 2015.05.15 |
---|---|
제네릭 , 콜렉션프레임워크 (1) -코드 (0) | 2015.05.15 |
오늘의 java 예외처리 (0) | 2015.05.12 |
예외처리 오늘 분 // 이해필요 (0) | 2015.05.12 |
목이 뻐근타 (0) | 2015.04.30 |