How to be productive?
2018, Feb 07
Lambda
Created: April 30, 2022 7:19 PM Tags: Java
Lambda(λλ€μ)μ΄λ?
- μ΅λͺ ν¨μλ₯Ό μ§μΉνλ μ©μ΄
- ν¨μλ₯Ό λ³΄λ€ λ¨μνκ² νννλ λ°©λ²
μ₯μ
- μ½λμ κ°κ²°μ±
- μ§μ°μ°μ μν - λλ€λ μ§μ°μ°μμ μν ν¨μΌλ‘μ¨ λΆνμν μ°μ°μ μ΅μν ν μ μλ€.
- λ³λ ¬μ²λ¦¬ κ°λ₯ - λ©ν°μ°λ λλ₯Ό νμ©νμ¬ λ³λ ¬μ²λ¦¬λ₯Ό μ¬μ© ν μ μλ€.
λ¨μ
- λλ€μμ νΈμΆμ΄ κΉλ€λ‘λ€.
- λλ€ stream μ¬μ©μ λ¨μ forλ¬Έ νΉμ whileλ¬Έ μ¬μ© λ³΄λ€ μ±λ₯μ΄ λ¨μ΄μ§λ€.
- λΆνμνκ² μ¬μ©νκ² λλ©΄ κ°λ μ±μ λ¨μ΄ λ¨λ¦΄ μ μλ€.
λλ€ ννμ μμ±λ²
(λ§€κ°λ³μλͺ©λ‘) -> {ν¨μ λͺΈμ²΄}
//κΈ°μ‘΄ ννμ
int min(int x, int y){
return x<y ? x: y;
}
//λλ€ ννμ
(x, y) -> x < y ? x : y;
- μ μ μ¬ν
- λ§€κ°λ³μμ νμ μ μΆλ‘ ν μ μλ κ²½μ° νμ μ μλ΅ν μ μλ€.
- λ§€κ°λ³μκ° νλμΈ κ²½μ°μλ κ΄νΈ(())λ₯Ό μλ΅ν μ μλ€.
- ν¨μμ λͺΈμ²΄κ° νλμ λͺ λ Ήλ¬Έλ§μΌλ‘ μ΄λ£¨μ΄μ§ κ²½μ°μλ μ€κ΄νΈ({})λ₯Ό μλ΅ν μ μλ€.(μ΄ λ μΈλ―Έμ½λ‘ (;)μ λΆμ΄μ§ μμ)
- ν¨μμ λͺΈμ²΄κ° νλμ return λ¬ΈμΌλ‘λ§ μ΄λ£¨μ΄μ§ κ²½μ°μλ μ€κ΄νΈ({})λ₯Ό μλ΅ν μ μλ€.
-
return λ¬Έ λμ ννμμ μ¬μ©ν μ μμΌλ©°, μ΄ λ λ°νκ°μ ννμμ κ²°κ³Όκ°μ΄ λλ€.(μ΄ λ μΈλ―Έμ½λ‘ (;)μ λΆμ΄μ§ μμ)
new Thread(new Runnable() { public void run(){ System.out,println("μ ν΅μ μΈ λ°©μμ μ€λ λ μμ±"); } }).start(); new Thread(()->{ System.out.println("λλ€ ννμμ μ¬μ©νμ€λ λ μμ±"); }).start();
ν¨μν μΈν°νμ΄μ€(functional interface)
- λλ€ ννμμ μ¬μ©ν λλ λλ€ ννμμ μ μ₯νκΈ° μν μ°Έμ‘° λ³μμ νμ μ κ²°μ ν΄μΌλ§ ν©λλ€.
- μ°Έμ‘°λ³μμνμ μ°Έμ‘°λ³μμμ΄λ¦ = λλ€ννμ
- ν¨μν μΈν°νμ΄μ€λ μΆμ ν΄λμ€μλ λ¬λ¦¬ λ¨ νλμ μΆμ λ©μλλ§μ κ°μ ΈμΌ νλ€.
- @FunctionalInterfaceλ₯Ό μ¬μ©νμ¬ ν¨μν μΈν°νμ΄μ€μμ λͺ μ ν μ μλ€.
@FunctionalInterface
interface Calc { //ν¨μν μΈν°νμ΄μ€μ μ μΈ
public int min(int x, int y);
}
public class Lambda02{
public static void main(String[] args){
Calc minNum = (x, y) -> x < y ? x : y; //μΆμ λ©μλμ ꡬν
System.out.println(minNum.min(3,4)); //ν¨μν μΈν°νμ΄μ€μ μ¬μ©
}
Reference
[JAVA] λλ€μ(Lambda)μ κ°λ λ° μ¬μ©λ²
-->