Item 42. Lambda
μ΅λͺ ν΄λμ€λ³΄λ€λ λλ€λ₯Ό μ¬μ©νλΌ
μμ μλ°μμλ ν¨μ νμ μ ννν λ μΆμ λ©μλλ₯Ό νλλ§ λ΄μ μΈν°νμ΄μ€λ μΆμ ν΄λμ€λ₯Ό μ¬μ©νλ€. μ΄λ¬ν μΈν°νμ΄μ€μ μΈμ€ν΄μ€λ₯Ό ν¨μ κ°μ²΄λΌκ³ νλ©°, νΉμ ν¨μλ λμμ λνλ΄λλ° μ¬μ©νλ€.
class Main {
public static void main(String[] args) {
Collections.sort(words, new Comparator<String>() {
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
});
}
}
μ μ½λλ λ¬Έμμ΄μ κΈΈμ΄λ₯Ό κΈ°μ€μΌλ‘ μ λ ¬νλ μ½λλ‘, κΈ°λ₯μ μννλ λ°μλ λ¬Έμ κ° μμ§λ§ μ½λκ° λ무 κΈΈμ΄ κ°λ μ±μ΄ λ¨μ΄μ§λ λ¨μ μ΄ μλ€. μ΄ λ¨μ μ ν΄μνκΈ° μν΄ μλ° 8λΆν°λ λλ€λ₯Ό μ§μνκ² λλ©΄μ μ½λλ₯Ό λ κ°κ²°νκ² μμ±ν μ μκ² λμλ€.
class Main {
public static void main(String[] args) {
/*
1. λλ€ ννμ
- λ§€κ° λ³μμ λ°ν κ°μ νμ
μλ΅(μ»΄νμΌλ¬κ° λ¬Έλ§₯μ μ΄ν΄ νμ
μ μΆλ‘ )
- return λ¬Έ μλ΅(λ¨μΌ ννμμ΄λ―λ‘ μλμΌλ‘ λ°ν)
*/
Collections.sort(words, (o1, o2) -> Integer.compare(o1.length(), o2.length()));
/*
2. λΉκ΅μ μμ± λ©μλ μ¬μ©
*/
Collections.sort(words, comparingInt(String::length));
/*
3. List.sort μ¬μ©
*/
words.sort(comparingInt(String::length));
}
}
ν¨μν μΈν°νμ΄μ€λ₯Ό ꡬνν κ°μ²΄λ₯Ό μμ±νκΈ° λλ¬Έμ μ΄λ₯Ό μμ©νμ¬ ν¨μν μΈν°νμ΄μ€ νμ μ λ°λ λͺ¨λ κ³³μμ λλ€λ₯Ό μ¬μ©ν μ μλ€.
enum Operation {
// ν¨μ κ°μ²΄λ₯Ό μΈμ€ν΄μ€ νλμ μ μ₯ν΄ μμλ³ λμμ ꡬνν μ΄κ±° νμ
PLUS("+", (x, y) -> x + y),
MINUS("-", (x, y) -> x - y),
TIMES("*", (x, y) -> x * y),
DIVIDE("/", (x, y) -> x / y);
private final String symbol;
private final DoubleBinaryOperator op; // ν¨μν μΈν°νμ΄μ€ νμ
μ νλλ‘ μ μΈ
Operation(String symbol, DoubleBinaryOperator op) {
this.symbol = symbol;
this.op = op;
}
public double apply(double x, double y) {
return op.applyAsDouble(x, y);
}
}
λλ€μ νκ³
λ©μλλ ν΄λμ€μ λ¬λ¦¬, λλ€λ μ΄λ¦μ΄ μκ³ λ¬Έμνλ₯Ό λͺ» νκΈ° λλ¬Έμ μ½λ μμ²΄λ‘ λμμ΄ λͺ
νν μ€λͺ
λμ§ μλ κ²½μ°κ° μλ€.
λν μ΅λͺ
ν΄λμ€μ this
λ μ΅λͺ
ν΄λμ€ μμ μ κ°λ¦¬ν€μ§λ§, λλ€μ this
λ λλ€μμ κ°μΌ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ μ°¨μ΄κ° μκΈ° λλ¬Έμ μμ μ μ°Έμ‘°ν΄μΌ νλ€λ©΄ μ΅λͺ
ν΄λμ€λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
λλ¬Έμ λλ€λ₯Ό μ¬μ©νλ κ²½μ°μ μ½λ μ€μκ° μ μ΄μ κ°κ²°νκ² ννλ μ μλ κ²½μ°μλ§ μ¬μ©νλ κ²μ΄ μ’λ€.
Last updated
Was this helpful?