
λλ€μμ΄λ?
JAVA8 λΆν° μ¬μ© κ°λ₯νλ©°, μ΅λͺ ν¨μλ₯Ό νννλ λ°©λ²
ν¨μν νλ‘κ·Έλλ° μ€νμΌμ ν΅ν΄ μ½λμ κ°λ μ±μ΄ λμμ§κ³ λΆνμν λ°λ³΅μ μ€μΈλ€
λλ€μμ κΈ°λ³Έ λ¬Έλ²
- λ μ«μμ ν©μ κ³μ°νλ λλ€μ
(int a, int b) -> a + b
λλ€μμ κ΅¬μ± μμ
1. λ§€κ°λ³μ λͺ©λ‘
- λ§€κ°λ³μμ νμ μ μλ΅κ°λ₯, μ»΄νμΌλ¬κ° νμ μΆλ‘ ν¨
2. νμ΄ν (->)
- λ§€κ°λ³μμ λλ€ λ³Έλ¬Έμ ꡬλΆνλ λ° μ¬μ©
3. λλ€ λ³Έλ¬Έ
- νλμ ννμμ΄κ±°λ μ€κ΄νΈλ‘ μ¬λ¬ ꡬ문μ κ°μ μ μλ€
λλ€μ μμ
// κΈ°λ³Έμ μΈ λλ€μ μμ
Runnable r = () -> System.out.println("Hello, World!");
r.run();
// 리μ€νΈ μ λ ¬
List<String> list = Arrays.asList("apple", "banana", "cherry");
list.sort((a, b) -> a.compareTo(b));
// ν¨μν μΈν°νμ΄μ€ μ¬μ©
@FunctionalInterface
interface MathOperation {
int operation(int a, int b);
}
public class LambdaTest {
public static void main(String[] args) {
MathOperation addition = (a, b) -> a + b;
MathOperation subtraction = (a, b) -> a - b;
System.out.println("10 + 5 = " + operate(10, 5, addition));
System.out.println("10 - 5 = " + operate(10, 5, subtraction));
}
private static int operate(int a, int b, MathOperation op) {
return op.operation(a, b);
}
}
ν¨μν μΈν°νμ΄μ€λ‘ λλ€μμ μ¬μ©νλ €λ©΄ λμ νμ μ λ°λμ νλμ μΆμ λ©μλλ§μ κ°μ§λ μΈν°νμ΄μ€μ¬μΌ νλ€.
μ΄λ¬ν μΈν°νμ΄μ€λ₯Ό ν¨μν μΈν°νμ΄μ€λΌκ³ νλλ°, μλ°8λΆν°λ ν¨μν μΈν°νμ΄μ€λ₯Ό μ½κ² μ μν μ μγ·λ‘γ γ±
@FunctionalInterface μ΄λ Έν μ΄μ μ μ 곡νλ€.
μ€νΈλ¦Ό API
μλ°μ collection λ°μ΄ν° (ex: list, set λ±)λ₯Ό μ²λ¦¬νλ λ° μμ΄ ν¨μν νλ‘κ·Έλλ° μ€νμΌ μ 곡
μ€νΈλ¦Όμ μ¬μ©νλ©΄ λ°μ΄ν°μμ€λ₯Ό λ³κ²½νμ§ μκ³ λ λ°μ΄ν°μ μ°μμ μΈ λ³ν λ° νν°λ§ μμ μ μνν μ μλ€
μ€νΈλ¦Ό μμ±
// 리μ€νΈλ‘λΆν° μ€νΈλ¦Όμ μμ±νλ λ°©λ²
List<String> list = Arrays.asList("apple", "banana", "cherry");
Stream<String> stream = list.stream();
μ€νΈλ¦Ό νν°
// λ¬Έμμ΄ λ¦¬μ€νΈμμ κΈΈμ΄κ° 5 μ΄νμΈ λ¬Έμμ΄λ§ νν°λ§
List<String> list = Arrays.asList("apple", "banana", "cherry", "date");
List<String> filteredList = list.stream()
.filter(s -> s.length() <= 5)
.collect(Collectors.toList());
System.out.println(filteredList); // μΆλ ₯: [apple, cherry, date]
// λλ€μκ³Ό μ€νΈλ¦Ό νν°λ₯Ό μ¬μ©ν λ°μ΄ν° μ²λ¦¬
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
public class LambdaStreamExample {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("John", 20),
new Person("Jane", 17),
new Person("Tom", 23),
new Person("Lucy", 15)
);
List<Person> adults = people.stream()
.filter(p -> p.age >= 18)
.collect(Collectors.toList());
adults.forEach(System.out::println); // μΆλ ₯: John (20), Tom (23)
}
}
'Backend > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [JAVA] final ν€μλμ λν΄μ (0) | 2024.06.25 |
|---|---|
| [JAVA] Arrays.asList()μ List.of()μ μ°¨μ΄μ (0) | 2024.06.10 |
| [JAVA] μλ° μ»¬λ μ (Collection) νλ μμν¬ (0) | 2022.01.18 |
| [JAVA] Wrapper Class (0) | 2022.01.14 |
| [JAVA] μ±κΈν€ ν¨ν΄μ΄λ? (0) | 2022.01.11 |