Java의 화살표 연산자 ->

Mohammad Irfan 2023년10월12일
  1. Java에서 화살표 연산자를 사용하는 방법
  2. Java 컬렉션의 화살표 연산자
  3. Java 스레드의 화살표 연산자
Java의 화살표 연산자 ->

이 튜토리얼에서는 화살표 연산자(->)가 Java에서 수행하는 작업을 소개하고 주제를 이해하기 위한 몇 가지 예제 코드도 나열합니다.

Java 8에서는 새로운 기능인 람다 표현식이 추가됨과 동시에 람다 표현식을 구성하는 데 사용되는 화살표 연산자가 Java에 등장했습니다. 표현식 본문에서 인수를 분리합니다.

(parameters) -> {
  statements;
} // Lambda expression having arrow

Lambda 표현식은 Java 8에서 도입되었으며 Java의 익명 클래스 대신 사용하여 코드를 보다 간결하고 읽기 쉽게 만들 수 있습니다.

다음은 Java 8 이전에 Java에서 익명 클래스를 만드는 방법의 예입니다.

Runnable r = new Runnable() {
  @Override
  public void run() {
    System.out.print("Run method");
  }
};

이것이 Java 8에서 람다 표현식을 사용하여 위의 작업을 구현하는 방법입니다.

Runnable r = () -> System.out.print("Run method");

람다 및 화살표 연산자의 사용도 이해하기 위해 몇 가지 예부터 시작하겠습니다.

Java에서 화살표 연산자를 사용하는 방법

이 예제에서는 화살표 연산자를 사용하여 Drawable 인터페이스의 draw() 메서드를 구현하는 람다 식을 만들었습니다. 아래 예를 참조하십시오.

interface Drawable {
  public void draw();
}
public class Main {
  public static void main(String[] args) {
    int width = 20;
    // arrow operator
    Drawable d2 = () -> {
      System.out.println("Drawing width:  " + width);
    };
    d2.draw();
  }
}

출력:

Drawing width:  20

람다 표현식은 기능적 접근 방식으로 간결한 코드를 만드는 가장 좋은 방법이므로 Java 코드에서 여러 가지 방법으로 사용할 수 있습니다. 적용할 수 있는 몇 가지 예를 살펴보겠습니다.

Java 컬렉션의 화살표 연산자

이 예에서는 람다 식을 사용하여 ArrayList 데이터를 필터링합니다. 스트림 API와 filter() 메서드를 사용하여 원하는 결과를 얻었습니다. 비-람다 코드보다 람다를 사용하여 코드를 만드는 것이 얼마나 쉬운지 알 수 있습니다. 아래 예를 참조하십시오.

package javaexample;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
class Product {
  int id;
  String name;
  float price;
  public Product(int id, String name, float price) {
    this.id = id;
    this.name = name;
    this.price = price;
  }
}
public class Main {
  public static void main(String[] args) {
    List<Product> list = new ArrayList<Product>();
    list.add(new Product(1, "Samsung S5", 17000));
    list.add(new Product(3, "Iphone 12", 100500));
    list.add(new Product(2, "Sony Xperia", 25000));

    // using arrow to filter data
    Stream<Product> filtered_data = list.stream().filter(p -> p.price > 17000);
    filtered_data.forEach(product -> System.out.println(product.name + ": " + product.price));
  }
}

출력:

Iphone 12: 100500.0
Sony Xperia: 25000.0

Java 스레드의 화살표 연산자

이것은 실행 가능한 인터페이스의 run() 메소드를 구현하는 데 사용한 람다 표현식의 또 다른 용도입니다. Runnable은 단일 메서드 인터페이스이므로 람다 식을 사용하기 쉽습니다. 아래 예를 참조하십시오.

package javaexample;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    // using arrow
    Runnable r = () -> {
      System.out.println("Thread is running...");
    };
    Thread t2 = new Thread(r);
    t2.start();
  }
}

출력:

Thread is running...

관련 문장 - Java Operator