λλ€ νκΈ°λ²μ΄λ! λ©μλλ₯Ό μ μΈνκ±°λ μΈμλ₯Ό λ°μμ€λ λ±μ νλ‘κ·Έλλ°μ ν λ, λ°λ³΅λλ μμλ₯Ό μ΅λν μ€μ¬μ νλ‘κ·Έλ¨ μμ€ κΈΈμ΄λ₯Ό μ€μ΄λ λͺ©μ μΌλ‘ λ§λ€μ΄μ§ νκΈ°λ²μ΄λ€. ν¨μν νλ‘κ·Έλλ°μ΄ μ‘°κΈμ© μ¬μ©λ¨μ λ°λΌ μ¬μ© λΉλκ° μ¦κ°νμλ€. λλ€νκΈ°λ²μ μ¬μ©νλ©΄ κ°λ¨νκ² ->λ‘ μ½λμ κΈΈμ΄λ₯Ό ν μ€μΌ μ μλ€.
1. λλ€μμ μ΄μ©ν μ΅λͺ ν¨μ
1-1. μΈμκ° 2κ°μΈ κ²½μ°
@FunctionalInterface
interface MyLambdaFunction {
int sum(int a, int b);
}
public class LambdaExample {
public static void main(String[] args) {
//2κ°μ μΈμλ₯Ό λ°μμ κ³μ° ν λ°ννλ ν¨μλ₯Ό λλ€νκΈ°λ²μ μμ±
MyLambdaFunction myLambdaFunction = (int a, int b) -> a + b; //(μΈμ) -> (리ν΄κ°);
System.out.println("λλ€μμ μ΄μ©ν μ΅λͺ
ν¨μ: " + myLambdaFunction.sum(3, 5));
}
}
console
λλ€μμ μ΄μ©ν μ΅λͺ
ν¨μ: 8
1-2. μΈμκ° μλ κ²½μ°
@FunctionalInterface
interface MyPrint {
String printLambda();
}
public class LambdaExample {
public static void main(String[] args) {
//μΈμ μμ΄ κ²°κ³Όκ°μ λ°ννλ ν¨μλ₯Ό λλ€νκΈ°λ²μ μμ±
MyPrint myPrint = () -> "Hello World";
System.out.println("λλ€μμ μ΄μ©ν μ΅λͺ
ν¨μ = " + myPrint.printLambda());
}
}
console
λλ€μμ μ΄μ©ν μ΅λͺ
ν¨μ = Hello World
2. ν¨μν μΈν°νμ΄μ€ μ¬μ©νκΈ°
2-1. Suplier: 맀κ°λ³μ μμ λ
import java.util.function.Supplier;
public class LambdaExample {
public static void main(String[] args) {
//1. Supplier: 맀κ°λ³μ μμ΄ λ°νκ°λ§ κ°λ ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ λ°©λ²
Supplier<String> supplier = () -> "Hello everyone";
System.out.println("맀κ°λ³μ μμ΄ λ°νκ°λ§ κ°λ ν¨μ = " + supplier.get());
}
}
console
맀κ°λ³μ μμ΄ λ°νκ°λ§ κ°λ ν¨μ = Hello everyone
2-2. Consumer
import java.util.function.Consumer;
public class LambdaExample {
public static void main(String[] args) {
//2. Consumer: κ°μ²΄ Tλ₯Ό 맀κ°λ³μλ‘ λ°μμ μ¬μ©νκ³ λ°νκ°μ μλ ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ λ°©λ²
Consumer<String> consumer = (s) -> System.out.println(s.split(" ")[0]);
consumer.accept("Hello doNotPrint"); //λ§λ ν¨μλ₯Ό μ¬μ©ν΄μ μ€ν
}
}
console
Hello
andThen μμ μ¬μ©ν μ μλ νκΈ°λ²
consumer.andThen(System.out::println).accept("Hello");//λ©μλ μ°Έμ‘°μ λν λλ€ νκΈ°λ²
2-3. Function : T -> R
import java.util.function.Function;
public class LambdaExample {
public static void main(String[] args) {
//3. Function: κ°μ²΄ Tλ₯Ό 맀κ°λ³μλ‘ λ°μμ μ²λ¦¬ν ν, Rλ‘ λ°ννλ ν¨μν μΈν°νμ΄μ€ μ¬μ©νλ λ°©λ²
Function<String, Integer> function = str -> str.length(); //ν¨μ μμ±
System.out.println("Hello Worldμ κΈΈμ΄λ " + function.apply("Hello World"));
}
}
console
Hello Worldμ κΈΈμ΄λ 11
2-4. Predicate : Boolean κ°μΌλ‘ λ°ν
import java.util.function.Predicate;
public class LambdaExample {
public static void main(String[] args) {
//4. Predicate: κ°μ²΄ Tλ₯Ό 맀κ°λ³μλ‘ λ°μ μ²λ¦¬ν ν, BooleanμΌλ‘ λ°ννλ ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ λ°©λ²
Predicate<String> predicate = s -> s.equals("Hello World"); //ν¨μ μμ±
System.out.println("Hello Worldμ κ°λμ? " + predicate.test("Hello World"));
System.out.println("Hello Worldμ κ°λμ? " + predicate.test("Hello My World"));
}
}
console
Hello Worldμ κ°λμ? true
Hello Worldμ κ°λμ? false
*str s λ μμμ λ³μ
*(s) -> ... μμ (s) κ΄νΈλ₯Ό λΉΌλ μ€νμ΄ λ¨
'π₯οΈ > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] λΆλ³ κ°μ²΄μ Wrapper Class (0) | 2023.03.22 |
---|---|
[Java] Stream API: streamμ λ€μν μ°μ°κ³Ό μμ μ½λ (0) | 2023.03.21 |
[Java] νμ μ 보λ₯Ό λ°λ κΈ°λ³Έ μ½λ (0) | 2023.03.20 |
[Java] λ°°μ΄: μμ μ½λλ‘ λ°°μ΄ μμ±, λ°°μ΄ μμ κ°μ²΄ μμ±, λ°°μ΄ μΆλ ₯νλ λ² λ°°μ°κΈ° (0) | 2023.03.19 |
[Java] μμ±μ(Constructor)μ νΉμ§ (0) | 2023.03.19 |