Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java의 Lambda 표현식:가이드

자바에서 람다 표현식을 사용하는 방법

메서드를 선언하는 데 사용해야 하는 장황한 Java 구문이 아니라면 일부 메서드가 한 줄에 들어갈 수 있다고 생각한 적이 있습니까? 당신은 유일한 사람이 아닙니다.

메서드는 프로그래밍에서 매우 유용한 기능입니다.

메서드는 프로그램에서 특정 작업을 수행하는 코드 블록입니다. 메서드를 정의하면 여러 번 호출할 수 있기 때문에 사용됩니다. 이렇게 하면 코드의 중복성을 줄여 코드를 유지 관리하기가 더 쉬워집니다.

이 가이드에서는 Java의 람다 표현식에 대해 이야기할 것입니다. 이는 기능적 인터페이스를 구현하는 람다 식이라고 하는 특별한 유형의 메서드입니다. 작동 방식과 사용 이유에 대해 이야기하겠습니다.

기능 인터페이스란 무엇입니까?

람다 식에 대해 이야기하기 전에 함수형 인터페이스를 이해해야 합니다. 이것은 하나의 추상 메소드만 포함하는 인터페이스입니다. 기능적 인터페이스에 포함된 하나의 추상 메소드는 인터페이스의 목적을 나타냅니다.

다음 예를 고려하십시오.

interface CalculateThree {
	double multiply_by_three(String day);
}

CalculateThree라는 인터페이스를 만들었습니다. 이 인터페이스에는 multiply_by_three 메서드가 하나만 있습니다. , 이는 기능적 인터페이스임을 의미합니다.

자바 람다 표현식이란 무엇입니까?

람다 식은 이름 없는 메서드입니다. 기능 인터페이스 내에서 정의된 메서드를 구현하는 데 사용됩니다. 람다 표현식은 이름이 없기 때문에 익명 메서드라고도 합니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

람다 표현식은 화살표 연산자를 사용하여 두 섹션으로 나눕니다.

(parameter list) -> lambda body

왼쪽에는 표현식이 사용하는 매개변수가 있습니다. 오른쪽에는 Lambda 표현식이 실행될 때 실행될 코드가 있습니다. Lambda 함수는 단일 매개변수 또는 여러 매개변수를 허용할 수 있습니다.

람다 표현식 사용 방법

사용자가 입력한 숫자를 입력받아 3을 곱하는 프로그램을 만들어 봅시다. 사용자로부터 번호를 받는 코드를 작성하는 것으로 시작하겠습니다.

import java.util.Scanner;

class Main {
public static void main(String args[]) {
	Scanner user_input = new Scanner(System.in);
	System.out.println("Insert a number to multiply by three: ");

	double user_number = user_input.nextDouble();
	}
}

이 코드를 실행하면 사용자에게 곱할 숫자를 입력하라는 메시지가 표시됩니다. 우리 프로그램은 그 숫자를 변수 "user_number"로 읽어들일 것입니다. Java Scanner에 대한 자습서를 읽으면 Scanner 클래스가 작동하는 방식에 대해 자세히 알아볼 수 있습니다.

다음으로 숫자에 3을 곱하는 람다 식을 정의하겠습니다. main 위에 다음 코드를 붙여넣습니다. 방법:

interface CalculateThree {
	double multiply_by_three(double number); 
}

이 코드는 람다 표현식이 참조할 인터페이스를 정의합니다. 그런 다음 클래스의 기본 메서드 맨 아래에 다음 코드를 추가합니다.

CalculateThree multiply = (number) -> number * 3;
double answer = multiply.multiply_by_three(user_number);

System.out.println(user_number + " multiplied by three is " + answer);

우리는 "multiply"라는 변수를 선언하기 위해 CalculateThree 인터페이스를 사용했습니다. 이것은 람다 식에 대한 코드를 저장합니다. 람다 표현식은 multiply_by_three와 연결됩니다. multiply_by_three 때문에 우리의 CalculateThree 인터페이스에서 인터페이스의 유일한 기능입니다.

그런 다음 이 함수를 호출하기 위해 점 표기법을 사용했습니다.

multiply.multiply_by_three(user_number);

점 표기법은 참조하려는 클래스 또는 인터페이스의 이름을 지정하고, 그 다음에 점, 액세스하려는 메서드의 이름을 지정하는 것입니다. 이 경우 multiply_by_three에 액세스하려고 합니다. "곱하기" 인터페이스 내부의 메소드.

최종 코드는 다음과 같습니다.

import java.util.Scanner;

interface CalculateThree {
	double multiply_by_three(double number);
}

class Main {
public static void main(String args[]) {
	Scanner user_input = new Scanner(System.in);
	System.out.println("Insert a number to multiply by three: ");

	double user_number = user_input.nextDouble();

	CalculateThree multiply = (number) -> number * 3;
	double answer = multiply.multiply_by_three(user_number);

	System.out.println(user_number + " multiplied by three is " + answer);

	}
}

코드를 실행하고 숫자 3을 삽입하여 곱해 보겠습니다.

Insert a number to multiply by three:
3
3.0 multiplied by three is 9.0

코드는 삽입한 숫자에 3을 성공적으로 곱했습니다. 이 작업은 우리가 정의한 람다 식을 사용하여 수행되었습니다.

블록 람다 표현식 사용 방법

람다 표현식은 단일 표현식을 사용하거나 블록을 사용하는 두 가지 형태로 나타날 수 있습니다. 블록 람다 구문은 화살표 오른쪽에 있는 코드가 여러 줄을 차지할 때 사용됩니다.

블록 구문은 람다 식의 오른쪽에 있는 코드를 중괄호({})로 묶는 곳입니다.

다음 예를 고려하십시오.

interface GreetUser {
	String welcome_user(String name);
}

class Main {
public static void main(String args[]) {
	GreetUser send_greeting = (name) -> {
		System.out.println("Good morning!");
		System.out.println("Welcome, " + name);
	};

	System.out.println(send_greeting.welcome_user("Brad"));
	}
}

send_greeting이라는 람다 식을 선언했습니다. . 이 표현식은 프로그램 시작 시 정의한 GreetUser 인터페이스를 나타냅니다. 람다 표현식은 두 가지 작업을 수행합니다. 그것:

  • "좋은 아침입니다!"라고 인쇄합니다. 콘솔로
  • "Welcome"을 콘솔에 출력하고 그 뒤에 사용자 이름을 출력합니다.

이것은 두 줄의 코드를 차지하기 때문에 블록 구문을 사용했습니다. 람다 식의 오른쪽에 있는 코드는 중괄호로 묶여 있습니다.

결론

람다 표현식은 기능적 인터페이스를 구현하는 이름 없는 메서드입니다. 이러한 함수는 이름이 없고 자체적으로 실행되지 않기 때문에 익명 클래스 또는 함수라고도 합니다.

도전할 준비가 되었나요? 숫자가 짝수인지 여부를 확인하는 람다 식을 작성하십시오. 그렇다면 "X is even"이 콘솔에 인쇄되어야 합니다. 여기서 X는 테스트 중인 숫자입니다. 그렇지 않으면 "X is 홀수"가 콘솔에 인쇄되어야 합니다.

이제 전문가처럼 Java에서 람다 표현식 작업을 시작할 준비가 되었습니다!