πToday I Learned
Java μμ
(73~74)
Ex73_Lambda
λλ€μ
-> μ΅λͺ
κ°μ²΄μ (ꡬνλ) μΆμ λ©μλ -> μΈν°νμ΄μ€ λ³μμ μ μ₯ -> λλ€μμ λ°λμ μΈν°νμ΄μ€κ° νμνλ€.
ν¨μν μΈν°νμ΄μ€, Functional Interface
- λλ€μμ μ¬μ©νκΈ° μν μ격
- λ€λ₯Έ μ©λλ‘ μ¬μ© μν¨
- μΆμ λ©μλλ₯Ό λ± 1κ° κ°μ§ μ μλ€. κ·Έ λ©μλκ° λλ€μμ΄ λλ€.
- νμ€ API ν¨μν μΈν°νμ΄μ€ > JDK μ 곡
- μ¬μ©μ μ μ ν¨μν μΈν°νμ΄μ€ > κ°λ°μ μ μΈ
ν¨μν μΈν°νμ΄μ€μμ μ리기 μν΄ μ΄λ
Έν
μ΄μ
μ λΆμΌ μ μλ€.
νμλ μλμ§λ§ λΆμ΄λ©΄ μ’λ€.
@FunctionalInterface
interface Test {
void aaa();
}
μΈν°νμ΄μ€ λ©€λ²
- μΆμ λ©€λ²
- finalμ΄λ static, defaultλ₯Ό λΆμ΄λ©΄ μΈν°νμ΄μ€ λ΄μμ ꡬνν μ μλ€.
νμ€ API ν¨μν μΈν°νμ΄μ€
- λλ€ κ°μ²΄λ€μ μ°μ°μ μν
- Consumer
-
맀κ°λ³μλ₯Ό λ°μμ μλΉνλ μ
무λ₯Ό ꡬννλ€.
-
맀κ°λ³μ O, λ°νκ° X -> μΆμ λ©μλ
-
acceptXXX() μΆμ λ©μλλ₯Ό μ 곡νλ€.
-
Consumer
-
BiConsumer
-
IntConsumer
-
..
Consumer<Integer> c1 = num -> System.out.println(num * num);
c1.accept(5);
2. Supplier
- 맀κ°λ³μ μμ΄ λ°νκ°μ λλ €μ£Όλ μ
무λ₯Ό ꡬννλ€.
- 맀κ°λ³μ X, λ°νκ° O
- getXXX() μΆμ λ©μλ μ 곡
Supplier<Integer> s1 = () -> 100;
System.out.println(s1.get());
3. Function
- 맀κ°λ³μλ₯Ό μ λ¬νλ©΄ μ²λ¦¬ ν, λ°νκ°μ λλ €μ£Όλ μ
무λ₯Ό ꡬννλ€.
- 맀κ°λ³μ O, λ°νκ° O
- applyXXX() μΆμ λ©μλ μ 곡
- Function
- BiFunction
Function<Integer, Boolean> f1 = num -> num > 0;
System.out.println(f1.apply(10));
- Operator
-
맀κ°λ³μλ₯Ό μ λ¬νλ©΄ μ²λ¦¬ ν, λ°νκ°μ λλ €μ£Όλ μ
무λ₯Ό ꡬννλ€.
-
맀κ°λ³μ O, λ°νκ° O
-
applyXXX() μΆμ λ©μλ μ 곡
-
Functionμ νμμ
-
맀κ°λ³μμ λ°νκ°μ νμ
μ΄ κ°λ€.
-
BinaryOperator
-
Functionμ νμμ
(μμ κΈ°λ₯ νΉν λ²μ )
BinaryOperator<Integer> bo1 = (a, b) -> a + b;
System.out.println(bo1.apply(10, 20));
- Predicate
- 맀κ°λ³μλ₯Ό μ λ¬νλ©΄ μ²λ¦¬ ν, λ°νκ°μ λλ €μ£Όλ μ
무λ₯Ό ꡬν
- 맀κ°λ³μ O, λ°νκ° O
- testXXX() μΆμ λ©μλ μ 곡
- Functionμ νμμ
- 맀κ°λ³μλ₯Ό μ λ¬λ°μ booleanμ λ°ννλ€.
- Predicate
- Functionμ νμμ
- ..
Predicate<Integer> p1 = num -> num > 0;
System.out.println(p1.test(10));
Ex74_Stream
μλ° μ€νΈλ¦Ό
- μ
μΆλ ₯ μ€νΈλ¦Ό
- νμΌ μ
μΆλ ₯, μ½μ μ
μΆλ ₯, λ€νΈμν¬ μ
μΆλ ₯..
- μ€νΈλ¦Ό
- Java 8(JDK 1.8)
- λλ€μ + ν¨μν μΈν°νμ΄μ€
- λ°°μ΄(컬λ μ
)μ νμ(μ‘°μ) μ§μ
- νμΌ μ
μΆλ ₯ μ§μ
- λλ ν 리 νμ μ§μ
λ°°μ΄, 컬λ μ
νμ
1. forλ¬Έ(루νλ³μ)
2. ν₯μλ forλ¬Έ
3. Iterator
4. μ€νΈλ¦Ό
ν¨μν μΈν°νμ΄μ€
1. Consumer
- (맀κ°λ³μ) -> {ꡬνλΆ}
- Supplier
- Function
- (맀κ°λ³μ) -> {return κ°}
- Operator
- (맀κ°λ³μ) -> {return κ°}
- 맀κ°λ³μμ λ°νκ°μ μλ£νμ΄ λμΌ
- Predicate
- (맀κ°λ³μ) -> {return κ°}
- λ°νκ°μ΄ boolean
μ€νΈλ¦Ό
- λ°μ΄ν° μμ€λ‘λΆν° νμ/μ‘°μ κ°λ₯ν λꡬ
- list.stream().forEach()
νμ΄ν, pipe
- μ€νΈλ¦Ό κ°μ²΄ λ©μλ
- μ€κ° νμ΄ν
- λ°νκ° O + μ€νΈλ¦Ό λ°ν
- μ΅μ’
νμ΄ν
- λ°νκ° X + void
- λ°νκ° O + λ€λ₯Έ μλ£ν
μμ μ²λ¦¬
- forEach()
- μ΅μ’
νμ΄ν
νν°λ§
- filter()
- μ€κ° νμ΄ν
νλ‘μ νΈ μ£Όμ μ μ