본문 바로가기
Programming/Java

JAVA 8의 주요기능 : 람다, Stream

by Devsaurus 2024. 1. 9.
728x90

Java 8에는 Java 코드의 표현성, 가독성 및 유연성을 향상시키기 위한 몇 가지 중요한 기능과 향상된 기능이 도입되었습니다. Java 8에 도입된 두 가지 주요 기능은 람다 표현식과 Stream API입니다.

 

람다 식

 

람다 표현식은 단일 메서드 인터페이스(기능 인터페이스)의 인스턴스를 표현하는 간결한 방법을 소개합니다. 익명 함수 생성을 허용하여 코드의 가독성과 유연성을 향상시킵니다.

 

Syntax

(parameters) -> expression

 

// Traditional anonymous class
Runnable runnable1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello, world!");
    }
};

// Lambda expression
Runnable runnable2 = () -> System.out.println("Hello, world!");

 

사용 사례

기능적 인터페이스: 람다 표현식은 Runnable 인터페이스, Comparator 인터페이스 등과 같은 기능적 인터페이스에 대한 구현을 제공하는 데 일반적으로 사용됩니다.

 

Stream API

Stream API는 기능적 스타일로 데이터를 처리할 수 있는 스트림이라는 새로운 추상화를 제공합니다. 스트림을 사용하면 간결하고 표현력이 풍부한 코드를 사용하여 복잡한 데이터 조작을 더 쉽게 수행할 수 있습니다.

 

List<String> names = Arrays.asList("John", "Alice", "Bob", "Charlie");

// Using Stream API to filter and print names starting with 'A'
names.stream()
     .filter(name -> name.startsWith("A"))
     .forEach(System.out::println);

 

주요 개념

  • 스트림: 순차 및 병렬 집계 작업을 지원하는 일련의 요소입니다.
  • 중간 작업: 스트림을 다른 스트림으로 변환하는 작업(예: filter, map).
  • 터미널 작업: 결과나 부작용을 생성하는 작업(예: forEach, collect).

사용 사례

  • 데이터 처리: Stream API는 유창하고 기능적인 접근 방식을 제공하여 컬렉션 및 배열 처리를 단순화합니다.
  • 병렬 실행: 스트림은 멀티코어 시스템의 성능 향상을 위해 병렬 처리를 활용할 수 있습니다.

기타 Java 8 기능

기본 메소드

이제 인터페이스에 메소드 구현이 있을 수 있습니다. 이 기능은 기존 구현을 중단하지 않고 API를 발전시키는 데 유용합니다.

interface MyInterface {
    default void myMethod() {
        System.out.println("Default implementation");
    }
}

 

메서드 참조

메소드 참조는 람다 표현식에 대한 약식 구문을 제공하여 코드를 더 읽기 쉽게 만듭니다.

// Lambda expression
list.forEach(item -> System.out.println(item));

// Method reference
list.forEach(System.out::println);

 

Optional

Optional 클래스는 null을 명시적으로 확인하지 않고 선택적 값을 표현하는 방법을 제공합니다.

Optional<String> optionalName = Optional.ofNullable(getName());
String name = optionalName.orElse("Default Name");

 

 

마무리

 

이러한 기능은 전체적으로 Java 코드를 더욱 간결하고 표현력이 풍부하며 유지 관리하기 쉽게 만드는 데 기여합니다. 

특히 Lambda 표현식과 Stream API는 개발자가 Java에서 데이터 조작 및 처리에 접근하는 방식에 큰 영향을 미쳤습니다. 

이를 통해 보다 기능적이고 선언적인 프로그래밍 스타일이 가능해지며 상용구 코드가 줄어들고 Java 프로그램의 가독성이 향상됩니다.

728x90