2023. 7. 6. 12:33γjava
μ¬λ¬κ°μ§ νμμΌλ‘ interface ꡬννμ¬ λλ€ μ¬μ© μμ
1. λ§€κ°λ³μ μλ κ²½μ°
λ§€κ°λ³μ μ리λ ()λ‘ λͺ μ, μ€ν μ½λ 1μ€μΈ κ²½μ° μ€κ΄νΈ μλ΅ κ°λ₯
2.λ§€κ°λ³μ 1κ°μΈ κ²½μ°
λ§€κ°λ³μ μ리 () μλ΅ κ°λ₯
3.λ§€κ°λ³μ 2κ°μΈ κ²½μ°
λ§€κ°λ³μ () λͺ μνκ³ ,λ‘ λ§€κ°λ³μ λμ΄
4.return κ° μλ κ²½μ°μ½λμ return λͺ μνλ€λ©΄, μ€ν μ½λ 1μ€μΈ κ²½μ°λΌλ {} μλ΅ Xreturn μλ΅μ μ€ν κ²°κ³Ό κ°μ΄ λ¨μ μλ κ²½μ°μ κ°λ₯ex) 4λ² μμ trueλΌλ κ²°κ³Όκ°μ΄ λ¨μ
package test1;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
//Functional Interface
@FunctionalInterface //κ°λ°μ μ€μ λ°©μ§ μ΄λ
Έν
μ΄μ
interface Inter1{
void test();
}
interface Inter2{
void test(int num); //num 3 -> μ§μ, νμλ₯Ό μΆλ ₯
}
interface Inter3{
void test(String str, int num);
}
interface Inter4{
boolean test(int num);
}
public class Lambda2 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(10); list.add(20); list.add(30);
list.add(40); list.add(50); list.add(60);
//Consumer<T> void accept(T t) - acceptλΌλ λ©μλ
//Consumer<? extends T> void accept(T t) μ μλ κ°μ
Consumer<Integer> c = num -> System.out.println(num);
list.forEach(c); //리μ€νΈμ μλ μμμ νλνλ μ κ·Όν΄μ System.out.println(num)
//μ μλ λμΌ
list.forEach(c = num -> System.out.println(num));
String s = "aaa";
Integer.parseInt(s);
Integer.parseInt(s = "aaa");
//1 λ§€κ°λ³μ X > λ§€κ°λ³μ μλ¦¬λ§ μκ΄νΈλ‘ λͺ
μ
Inter1 i1 = () -> System.out.println("hello");
i1.test();
//2 λ§€κ°λ³μ 1 > λ§€κ°λ³μ μκ΄νΈ μλ΅ κ°λ₯
Inter2 i2 = num -> {
if(num % 2 == 0) {
System.out.println("μ§μ");
}
else{
System.out.println("νμ");
}
};
i2.test(10);
//3 numλ§νΌ str μΆλ ₯
Inter3 i3 = (str, num) -> {
for(int i = 0; i < num ; i++){
System.out.print(str);
}
};
i3.test("java", 2);
//4 μ§μλ©΄ true, νμλ©΄ false
Inter4 i4 = num -> {
//returnμ΄ μμΌλ©΄ μ½λ 1μ€μ΄μ΄λ {} μλ΅ x
return num % 2 == 0 ? true : false;
};
i4.test(10);
//4 μ§μλ©΄ true, νμλ©΄ false
Inter4 i5 = num ->
//return ν€μλκ° μμ΄λ μ½λ μ΄ν΄ κ°λ₯νλ©΄ return ν€μλ μ§μ°κ³ {} μλ΅ κ°λ₯
//μ€ν κ²°κ³Ό κ°μ΄ λ¨μ μλ€λ©΄ return μλ΅ κ°λ₯ > true λΌλ κ°μ΄ λ¨μ
num % 2 == 0 ? true : false;
i5.test(10);
}
}
μ λ€λ¦ / λλ€ μμ© 1
package test1;
//μλ£ν μ μ νκ³ Tλ‘ μ€
interface Calculate<T>{
//μΆμ λ©μλ
T cal(T num1, T num2);
}
public class Lambda3 {
public static void main(String[] args) {
//μ λ€λ¦ μ¬μ© μ μΈν°νμ΄μ€ ꡬν ν λ μλ£ν μ ν΄μ§
Calculate<Integer> c1 = (num1, num2) -> num1 + num2; // λ λ§€κ°λ³μμ ν©
Calculate<Double> c2 = (num1, num2) -> num1 / num2; // λ λ§€κ°λ³μμ λͺ«
System.out.println(c1.cal(10, 20));
System.out.println(c2.cal(15.0,2.0));
}
}
μμ© 2
package test1;
//Predict<T> boolean test(T t)
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class Lambda4 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(10); list.add(20); list.add(30);
list.add(40); list.add(50); list.add(60);
Predicate<Integer> p = n -> n % 2 == 0; //testλΌλ λ©μλμ λ΄μ©μΌλ‘ λ€μ΄κ°
sum(list, p);
//μμ λμ€ μλ νμ€κ³Ό λμΌ
//λ©μλλ νλμ§λ§ λνλ κ³Όμ μ λ°κΏ μ μμ
sum(list, n -> n % 2 == 0); //μ§μμ ν©λ§
sum(list, n -> n % 2 != 0); //νμμ ν©λ§
}
//λ©μλ μ°Έμ‘°, μ΅μ
λ, μ€νΈλ¦Ό μ¬μ© μ€μ!!
//public static <T, R> R sum(List<T> list, Predicate<Integer> p) { μ²λΌ νμ₯ κ°λ₯
public static int sum(List<Integer> list, Predicate<Integer> p) {
//νΉμ 쑰건μ λ§λ 리μ€νΈ μμμ ν©μ 리ν΄
int sum = 0;
for(int num : list){
if(p.test(num)){
sum += num;
}
}
return sum;
}
}
** μΆκ°
λλ€ λ©μλ μ¬λ¬κ°λ©΄ λͺ» μ°λλ° ? > ꡬνν λ©μλ μ¬λ¬κ° λΈμ λν μ€λͺ
μλ 3κ°λ μ΄λ―Έ ꡬνλ λ©μλμ΄κ³
testλ§ μΆμ λ©μλ
μμ μμ΄μ½μ΄ λ€λ₯΄κ³ λ§μ°μ€ μ¬λ €λ³΄λ©΄ μΆμ λ©μλ / λ©μλ λ°λ‘ λμ€λ κ²μ νμΈ κ°λ₯!

'java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| lambda (0) | 2023.07.06 |
|---|---|
| Map (0) | 2023.03.31 |
| μ«μ μΌκ΅¬ κ²μ (0) | 2023.02.09 |
| β β β 컬λ μ νλ μμν¬2 (0) | 2023.02.07 |
| 컬λ μ νλ μμν¬ λ¬Έμ νκΈ° (0) | 2023.02.03 |