λλ€μ
μ΅λͺ ν¨μ(anonymous function) ννλ₯Ό κ°μ§ ννμ
λλ€μ κΈ°λ³Έ λ¬Έλ²
(맀κ°λ³μ) -> { μ€νμ½λ }
- 맀κ°λ³μ : λ©μλμ μ λ¬ν μ λ ₯κ° μ μ
- (->) : λλ€ μ°μ°μ (arrow operator)
- { μ€νμ½λ } : λ©μλμ μ€ν λ΄μ©μ μμ±
int add(int x, int y) {
return x + y;
}
// λ©μλ λ°ν νμ
, λ©μλλͺ
μλ΅
(int x , int y ) -> {
return x + y;
}
// 맀κ°λ³μ νμ
μλ΅
(x,y) -> {
return x + y ;
}
// 리ν΄λ¬Έλ§ μλ κ²½μ° μ€κ΄νΈ, return μλ΅
(x, y) -> x + y;
// νμ
μ μλ΅ν΄λ μ»΄νμΌλ¬κ° νμ
μμΉλ₯Ό μΆλ‘ νμ¬ λμνκΈ°λλ¬Έμ μ€λ₯λμ§μμ
λλ€μ μ₯μ
- μ½λ κ°κ²°μ±: λΆνμν μ΅λͺ ν΄λμ€ μμ± μμ΄ μ½λλ₯Ό μ€μΌ μ μμ΅λλ€.
- κ°λ μ± ν₯μ: ννμ΄ μ§κ΄μ μ΄λΌ μ΄ν΄νκΈ° μ½μ΅λλ€.
- ν¨μν νλ‘κ·Έλλ° μ§μ: μ€νΈλ¦Ό APIμ ν¨κ» νμ©νλ©΄ κ°λ ₯ν λ°μ΄ν° μ²λ¦¬ κΈ°λ₯μ μ 곡ν©λλ€.
λλ€μ λ¨μ
- λλ²κΉ μ΄λ €μ: λλ€μμ μ΅λͺ μ± λλ¬Έμ λλ²κΉ μ΄ λ³΅μ‘ν μ μμ΅λλ€.
- μ§λμΉκ² μ¬μ© μ 볡μ‘μ± μ¦κ°: κ°κ²°μ±μ μν΄ κ³Όλνκ² μ¬μ©νλ©΄ κ°λ μ±μ΄ λ¨μ΄μ§ μ μμ΅λλ€.
λλ€μμ λ κ°κ²°νκ² ( λ©μλ μ°Έμ‘° `::` μ°μ°)
λ©μλ μ°Έμ‘° `::` μ°μ°
list.flatMap(innerList -> innerList.stream());
list.flatMap(List::stream);
μ΄ λλ€μμ λ©μλ μ°Έμ‘° μ°μ°μ ν΅ν΄μ λ κ°λ΅νκ² μμ±ν μ μλ€.
`ν΄λμ€λͺ ::λ©μλλͺ `
Stream.of("1", "2", "3")
.map(Integer::parseInt)
.forEach(System.out::println);
// .map(s -> Integer.parseInt(s)) μ κ°μ
String str = "Hello";
Supplier<Integer> lengthSupplier = str::length;
System.out.println(lengthSupplier.get()); // κ²°κ³Ό: 5
// () -> str.length() μ κ°μ
System.out::println
// x -> System.out.println(x)
//System.out κ°μ²΄μ println κ°μ²΄ λ©μλλ₯Ό μ°Έμ‘°νλ€λ λ»
Stream.of(1, 2, 3, 4, 5)
.reduce(Math::max)
.ifPresent(System.out::println); // μΆλ ₯: 5
//Math.max μ°Έμ‘°
Supplier<List<String>> listSupplier = ArrayList::new;
List<String> list = listSupplier.get();
// () -> new ArrayList<>() μ κ°μ
μμ 1 : forEach λ©μλ + Stream λλ€μ
List<String> fruits = List.of("Apple", "Banana", "Cherry");
for (int i = 0; i < fruits.size(); i++) {
System.out.println(fruits.get(i));
}
List<String> fruits = List.of("Apple", "Banana", "Cherry");
fruits.forEach(fruit -> System.out.println(fruit));
foreach λ°λ³΅λ¬Έκ³Ό ForEach λ©μλ μ°¨μ΄μ