JAVA 기초

JAVA 16-2

Vanillwa 2023. 9. 1. 19:48

Lambda

메서드를 하나의 표현식(expression)으로 표기한 것

자바는 타 프로그래밍 언어와 같이 함수형 프로그래밍 방식이 적용되지 않으므로

함수만 독립적으로 정의하여 사용하기 위해 만든 방식 

 


 

람다식 문법

int add(int x, int y){
	return x+y;
}

//위의 코드를 람다식으로 표현

() -> {} 으로 구현
(int x, int y) -> {return x+y;}

//자료형 생략, 중괄호 생략 (return으로 반환할 경우 return도 같이 생략 가능)
(x, y) -> x+y;

 


 

람다식용 인터페이스

package ex2_lamda;

@FunctionalInterface //이 인터페이스를 람다식용으로 사용한다는 뜻
public interface MyFunction {
	//람다식용 인터페이스에 추상메서드는 반드시 하나여야 함
	void method(int num);
}

 

이중콜론

package ex2_lamda;

public class Calculator3 {
	public static void main(String[] args) {
		MyFunction mf = System.out::println;
		//::(이중콜론) : 메서드 참조 연산자
		//람다식을 더 간결하게 사용할 수 있도록 해줌
		//클래스명::함수명
		
		mf.method(30);
	}
}

실행 결과

 


 

람다식을 파라미터로 활용

 

package ex2_lamda;

public interface MyCaculator {
	int plus(int num1, int num2);
}
package ex2_lamda;

public class Calculator4 {
	public static void main(String[] args) {
		//람다식을 매개변수로 사용하기
//		MyCaculator calc = (num1,num2)->num1+num2;
//		System.out.println(myCalc(calc));
		
		System.out.println(myCalc((num1,num2)->num1+num2));
	}
	
	public static int myCalc(MyCaculator calc) {
		return calc.plus(1, 2);
	}
}

실행 결과

 


 

람다식을 활용해 List 요소 출력하기

 

package ex2_lamda;

import java.util.ArrayList;

public class Calculator5 {
	public static void main(String[] args) {
		//collection framework와 함수형 인터페이스
		//컬렉션 프레임워크엔 여러개의 인터페이스가 존재하며 그 중 일부는 함수형 인터페이스를 채택하고 있다.
		ArrayList<String> list = new ArrayList<>();
		list.add("이름1");
		list.add("이름2");
		list.add("이름3");
		list.add("이름4");
		list.add("이름5");
		
		list.forEach(System.out::println);
	}
}

실행 결과

 


 

'JAVA 기초' 카테고리의 다른 글

JAVA 17-2  (0) 2023.09.05
JAVA 17-1  (0) 2023.09.05
JAVA 16-1  (0) 2023.09.01
JAVA 15-2  (0) 2023.09.01
JAVA 15-1  (0) 2023.09.01