λλ€κ° μ΅λͺ ν΄λμ€λ³΄λ€ λμ μ μ€μμ κ°μ₯ ν° νΉμ§μ κ°κ²°ν¨μ΄λ€.
κ·Έλ°λ°, μλ°μλ ν¨μ κ°μ²΄λ₯Ό μ¬μ§μ΄ λλ€λ³΄λ€λ λ κ°κ²°νκ² λ§λλ λ°©λ²μ΄ μλλ°, κ·Έκ²μ΄ λ°λ‘ λ©μλ μ°Έμ‘°(method reference)λ€.
μ΄λ² κΈμμλ λλ€μ λ©μλ μ°Έμ‘°λ₯Ό λΉκ΅ν΄ λ³΄κ³ μΈμ μ΄λ€ κ²μ μ°λ©΄ μ’μμ§ μμ보λλ‘ νμ.
π 1. λλ€μ λ©μλ μ°Έμ‘°
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<>();
int myKey = 1;
int myValue = 3;
map.merge(myKey, myValue, (count, incr) -> count + incr);
System.out.println(map.get(myKey)); // 3
myValue = 5;
map.merge(myKey, myValue, (count, incr) -> count + incr);
System.out.println(map.get(myKey)); // 8
}
μμ merge λ©μλλ 맡 μμ myKeyμ ν΄λΉνλ ν€κ° μλ€λ©΄ myValueλ₯Ό 맀ννκ³ , μ΄λ―Έ μλ€λ©΄ κΈ°μ‘΄ κ°μ myValueλ₯Ό λνλ λ©μλλ€.
μΈ λ²μ§Έ μΈμλ‘ λλ€μμ μ¬μ©νκ³ μλλ°, 맀κ°λ³μμΈ countμ incrμ ν¬κ² νλ μΌμ΄ μμ΄ κ³΅κ°μ μ°¨μ§νκ³ μλ€. κ·Έλμ μ΄ μ½λλ₯Ό μ μ λ©μλ sumμ μ¬μ©νμ¬ μλμ κ°μ΄ λ³νν μ μλ€.
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<>();
int myKey = 1;
int myValue = 3;
map.merge(myKey, myValue, Integer::sum);
System.out.println(map.get(myKey)); // 3
myValue = 5;
map.merge(myKey, myValue, Integer::sum);
System.out.println(map.get(myKey)); // 8
}
μΌλ°μ μΌλ‘ λ©μλ μ°Έμ‘°λ₯Ό μ¬μ©νλ νΈμ΄ λ μ§§κ³ κ°κ²°νλ€. κ·Έλ κΈ° λλ¬Έμ λλ€λ‘ ꡬννμ λ λ무 κΈΈκ±°λ 볡μ‘νλ€λ©΄ λ©μλ μ°Έμ‘°κ° μ’μ λμμ΄ λλ€.
λν, λ©μλ μ°Έμ‘°λ₯Ό μ΄μ©νλ€λ©΄ κΈ°λ₯μ μ λλ¬λ΄λ μ΄λ¦μ μ§μ΄μ€ μ μκ³ μΉμ ν μ€λͺ μ λ¬Έμλ‘ λ¨κΈΈ μλ μλ€.
π 2. λλ€κ° λ©μλ μ°Έμ‘°λ³΄λ€ λ λμ κ²½μ°
κ·Έλ λ€κ³ νμ λ©μλ μ°Έμ‘°κ° λλ€λ³΄λ€ λ μ’μ κ²μ μλλ€. μλμ 2κ°μ§ μν©μ μ΄ν΄λ³΄μ.
π© 1. λλ€κ° λ κ°κ²°ν κ²½μ°
νμ λ©μλ μ°Έμ‘°κ° λλ€λ³΄λ€ λ κ°κ²°ν κ²μ μλλ€. μλ₯Ό λ€μ΄, μλμ κ°μ΄ λ©μλμ λλ€κ° κ°μ ν΄λμ€μ μμ λ λλ€κ° λ©μλ μ°Έμ‘°λ³΄λ€ λ κ°κ²°ν΄μ§κΈ°λ νλ€.
public static void main(String[] args) {
// λ©μλ μ°Έμ‘°
service.execute(GoshThisClassNameIsHumongous::action);
// λλ€
service.execute(() -> action());
}
λ©μλ μ°Έμ‘° μͺ½μ΄ λ 짧μ§λ, λ λͺ ννμ§λ μκΈ° λλ¬Έμ, μ΄λ° κ²½μ°μλ λλ€ μͺ½μ΄ λ«λ€.
π© 2. 맀κ°λ³μμ μ΄λ¦μ μ μ΄μ©νλ κ²½μ°
λλ€μμλ 맀κ°λ³μμ μ΄λ¦ μμ²΄κ° νλ‘κ·Έλλ¨Έμκ² μ’μ κ°μ΄λκ° λ μλ μλ€. μ΄λ° λλ€λ κΈΈμ΄λ λ κΈΈμ§λ§ λ©μλ μ°Έμ‘°λ³΄λ€ μ½κΈ° μ½κ³ μ μ§λ³΄μλ λ μ¬μΈ μ μλ€.
π 3. λ©μλ μ°Έμ‘°μ μ ν
λ©μλ μ°Έμ‘°μ μ ν λ€μκ³Ό κ°μ΄ 5κ°μ§κ° μλ€.
- μ μ λ©μλλ₯Ό κ°λ¦¬ν€λ λ©μλ μ°Έμ‘°
- μμ κ°μ²΄(μ°Έμ‘° λμ μΈμ€ν΄μ€)λ₯Ό νΉμ νλ νμ μ μΈμ€ν΄μ€ λ©μλ μ°Έμ‘°
- μμ κ°μ²΄λ₯Ό νΉμ νμ§ μλ λΉνμ μ μΈμ€ν΄μ€ λ©μλ μ°Έμ‘°
- ν΄λμ€ μμ±μλ₯Ό κ°λ¦¬ν€λ λ©μλ μ°Έμ‘°
- λ°°μ΄ μμ±μλ₯Ό κ°λ¦¬ν€λ λ©μλ μ°Έμ‘°
λ©μλ μ°Έμ‘° μ ν | μ | κ°μ κΈ°λ₯μ νλ λλ€ |
μ μ | Integer::parseInt | str -> Integer.paserInt(str) |
νμ μ (μΈμ€ν΄μ€) | Instant.now()::isAfter | Instant then = Instant.now(); t -> then.isAfter(t) |
λΉνμ μ (μΈμ€ν΄μ€) | String::toLowerCase | str -> str.toLowerCase() |
ν΄λμ€ μμ±μ | TreeMap<K, V>::new | () -> new TreeMap<K, V>() |
λ°°μ΄ μμ±μ | int[]::new | len -> new int[len] |
ν΄λΉ κΈμ Joshua Bloch λμ 'Effective Java 3/E'λ₯Ό μ°Έκ³ νμμ΅λλ€.