본문 바로가기

Web Dev/JAVA

자바8 Stream정리

범용적으로 사용되는 관수형 인터페이스


Java.util.function package

자바8은 범용적으로 사용되는 관수형 인터페이스는 java,util.function 패키지를 용의하고 있다.

java8로부터 추가된 새로운 메소드로 관수형인터페이스를 인수로 가지는 메소드의 대부분은

인수에 이 패키지를 용의한 관수형 인터페이스를 사용하고 있다.


람다식이 활약하는 Stream API

Java 8에서는 새롭게 도입되는 기능 중 함수형 인터페이스를 사용하여 작업을 수행하며이 추가되어 있습니다. 그 중에서도 특히 주목을 받고있는 것이 배열이나 Collection 등의 집합체를 취급하는 「Stream API "입니다.

 Stream API는 집합체를 취급 Stream 인스턴스에 대해 용도에 맞는 몇 가지 메소드를 추가하고 있고, 최종 메소드로 집계 처리 결과를 가져옵니다.

 예를 들어, 다음 예제에서는 [1]에서 요소를 "아"로 시작하는 것으로, 조리개 [2] 문자열 비교하고 최대의 것을 결과로 얻을 수 있습니다.

  1. public static void main ( String [] args ) {
  2. String [] values ​​= { "레드" , "아오" , "노란색" , "녹색" , "오렌지" };
  3. Stream < String > stream = Arrays . stream ( values ​​);
  4. String result = stream . filter ( value -> value . contains ( "아" )) // [1]
  5. . max (( v1 , v2 ) -> v1 . compareTo ( v2 )) // [2]
  6. . get ();
  7. System . out . println ( "result =" + result );
  8. }

 이 메소드를 추가해 나갈 구현 방법 (파이프 라인 처리의 구현 방법)에 거부감을 갖는 사람이 있을지도 모릅니다. 그러나 실제 처리 방법에 은폐되어 있기 때문에 향후 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