1 분 소요

1 자바 8의 새로운 기법

  • 스트림 API: 병렬 연산 지원
  • 매서드에 코드를 전달하는 기법: 메서드 참조와 람다
  • 인터페이스의 디폴트 매서드

1.1 스트림 처리

  • 스트림이란 한 번에 한개씩 만들어지는 연속적인 데이터들의 모임이다.
  • 자바의 System.in으로 데이터를 읽고 System.out으로 데이터를 출력한다.
  • 스트림 API는 유닉스의 파이프처럼 여러 파이프라인을 구성하게 제공한다.
  • Stream의 형태로 제공 한다.
  • 스레드를 사용하지 않고 병렬성을 얻게 한다.

1.2 동작 파라미터화로 메서드에 코드 전달

  • 코드 일부를 API로 전달하는 기능이다. 예를 들어 송장 ID가 2022KR0001,2022US0002 등의 형식이 존재할 때
    고객넘버나 국가 순으로 정렬 해야 할 수도 있는데 그러면 sort에 매서드를 전달 해야 하는데 자바 8이전에는 메서드를 다른 메서드를 전달이 불가능 했는데 자바 8에서는 제공한다.
  • 이러한 기능을 동작 파라미터화 라고 한다.

1.3 병렬성과 공유 가변 데이터

  • 스트림 메서드를 사용하기 위해서는 코드가 동시에 실행되더라도 안전하게 실행되어야된다.
  • 공유된 가변 데이터에 접근을 하지 않아야 하는데 기존의 synchronized를 사용할 경우 시스템 성능에 악영향을 끼친다.
  • 자바 8의 스트림을 이용하면 기존 자바 스레드 API보다 쉽게 병렬성을 활용할 수 있다.

2.함수형 프로그래밍

  • 순수 함수를 구현하고 호출함으로써 외부에 영향을 주지않고 매개변수만을 사용하여 만든 함수를 구현한다.
  • 입력받은 자료를 기반으로 수행되고 외부에 영향을 주지않으므로 병렬처리 등이 가능하다.
  • 안정적인 프로그램방식이다.

3. 람다식

  • 자바에서 함수형 프로그래밍을 구현하는 방식이다.
  • 자바 8부터 지원이 된다.
  • 클래스를 생성하지 않고 함수의 호출만으로 기능을 수행 할 수 있다.

3-1 람다식 만드는 법

  • 람다식의 구현은 다음과 같이 한다.
    (매개변수) -> {실행문;}
    함수의 이름, 반환형을 없애고 ->를 사용한다. 매개변수를 앞쪽에 ()안에 넣고 실행문을 뒤쪽 {}안에 넣는다.
    int add(int x, int y) {
      return x+y;
    }
    
(int x, int y) -> {return x + y;}

3-2 람다식 특징

  1. 매개변수가 하나인 경우 자료형과 매개변수의 괄호()를 생략 가능하다.
    str -> {System.out.println(str);}
    
  2. 매개변수가 두개인 경우 괄호를 생략 할 수 없다.
    x, y -> {System.out.println(x + y);} //잘못된 형식
    
  3. 중괄호{}안의 구현부가 한 문장인 경우 중괄호 생략 가능하다.
    str -> System.out.println(str);
    
  4. 중괄호 안의 구현부가 한 문장이라도 return문은 중괄호를 생략할 수 없다.
    str -> return str.length(); //잘못된 형식
    
  5. 중괄호 안의 구현부가 반환문 하나라면 return과 중괄호 모두 생략 가능하다.
    (x, y) -> x + y;
    str -> str.length();
    

3-3 람다식 구현

댓글남기기