[Java] 람다식(Lambda Expression) 실습
- 📕 Programing/Java
- 2020. 7. 28. 17:50
람다식
- 함수적 프로그래밍. 즉, y = f(x) 형태의 함수로 구성된 프로그래밍 기법
- 함수, 메서드를 하나의 식으로 표현하는 것이다
- 이름과 반환 값이 없기 때문에 익명함수(Anonymous Function)이라 한다.
- 람다식은 JDK 1.8에 추가 되었다.
자바에서 람다식을 수용한 이유
- 코드가 매우 간결해진다.
- 컬렉션 요소(대용량 데이터)를 필터링 또는 매핑해서 쉽게 집계할 수 있다.
1. 기본예제 (매개변수가 없을 경우)
public interface MyFunctionalInterface {
public void method();
}
package com.kyhslam.lamda;
public class MyFunctionalMain {
//매개변수가 없을 경우
public static void main(String[] args) {
MyFunctionalInterface func1 = new MyFunctionalInterface() {
@Override
public void method() {
String str = "직접 익명구현객체 생성함";
System.out.println(str);
}
};
func1.method();
func1 = () -> {
String str = "람다식으로 익명구현객체 생성함";
System.out.println(str);
};
func1.method();
func1 = () -> System.out.println("약식 람다식으로 익명구현객체 생성함");
func1.method();
}
}
2. 매개변수가 1개인 경우
public interface FuncInterface {
public void method(int x);
}
package com.kyhslam.lamda;
public class FuncInterfaceMain {
//매개변수가 1개 일 경우
public static void main(String[] args) {
FuncInterface func = null;
func = (x) -> {
int result = x * 5;
System.out.println("result의 값 : " + result);
};
func.method(10);
func = x -> System.out.println("result의 값 : " + (x * 5));
func.method(20);
}
}
3. 매개변수가 2개인 경우
public interface FuncInterface {
public int method(int x, int y);
}
package com.kyhslam.lamda.exam3;
public class FuncInterfaceMain {
//매개변수가 2개일 경우
public static void main(String[] args) {
FuncInterface func = null;
func = (x,y) -> {
int result = x + y;
return result;
};
System.out.println("매개변수 2개의 결과1 : " + func.method(10, 100));
//약식 표현
func = (x, y) -> { return x + y; };
System.out.println("매개변수 2개의 결과3 : " + func.method(50, 100));
func = (x, y) -> x + y;
System.out.println("매개변수 2개의 결과3 : " + func.method(150, 100));
func = (x, y) -> sum(x, y);
System.out.println("매개변수 2개의 결과4 : " + func.method(250, 100));
}
public static int sum(int x, int y) {
return x + y;
}
}
심화 예제 코드
package org.kyhslam.lambda;
import java.util.Arrays;
public class lambda_0728 {
public static void main(String[] args) {
int[] arr = new int[5];
/*for(int i=0; i < arr.length; i++){
arr[i] = getRandomNumber(i);
}*/
//위의 내용을 아래의 한줄로 간단하게 표현할 수 있다.
Arrays.setAll(arr, i -> (int)(Math.random()*5) + 1);
for(int i=0; i < arr.length; i++){
System.out.println(arr[i]);
}
}
public static int getRandomNumber(int i){
return (int) (Math.random()*5) + 1;
}
}
예제 2
public int sumArr (int[] arr){
int sum = 0;
for (int i: arr){
sum += i;
}
return sum;
}
내용을 람다식으로 변경해보면 아래와 같다.
int[] arr -> { int sum =0; for ( int i : arr ) sum += i; return sum; }
'📕 Programing > Java' 카테고리의 다른 글
[Java] Map 관련 Iterate(반복문) 방법 (0) | 2021.03.22 |
---|---|
[Java] 람다식(Lambda Expression) (0) | 2020.12.01 |
[Java] CPU, Memory 사용량 (0) | 2020.07.23 |
JVM(Java Virtual Machine) 내부 구조 (0) | 2020.05.29 |
[Java] 스택(Stack)과 큐(Queue) (0) | 2020.05.22 |