Ex87 ~ Ex90
λλ€μ, Lambda Expression
- ν¨μν νλ‘κ·Έλλ° λ°©μμ μ§μνλ ννμ
- λλ€μμ μ¬μ©νλ©΄ μ½λ μΌλΆκ° κ°κ²°ν΄μ§λ€.(νΈλΆνΈ)
- Java 8 μΆμ
- λͺ©μ > 컬λ μ
(λ°°μ΄) μ‘°μ
- μλ°μ λ©μλλ₯Ό νννλ λ°©λ² μ€ νλλ‘ μ¬μ©
- λλ€μμ λ©μλλ₯Ό λμ νλ μ½λλΈλμ΄λ€.
- μλ°μ λλ€μμ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν΄μ λ§λ λ€.
- μλ°μ λλ€μμ μ΅λͺ
κ°μ²΄(μΆμ λ©μλ)λ₯Ό λ§λλ ννμ κ°μνμν¨ κΈ°μ μ΄λ€.
- λλ€μμ μ μ₯νλ μΈν°νμ΄μ€λ λ°λμ Fuctional Interfaceμ΄μ΄μΌ νλ€.(μΆμ λ©μλλ₯Ό λ± 1κ°λ§ κ°μ ΈμΌν©λλ€.) >
λλ€μ νμ
- μΈν°νμ΄μ€ λ³μ = λλ€μ
- MyInterface m3 = () -> {};
(λ§€κ°λ³μ) -> {ꡬνλΆ};
a. (λ§€κ°λ³μ): λ©μλμ μΈμ리μ€νΈ
b. ->: νμ΄ν(Arrow), ꡬνλΆλ₯Ό νΈμΆνλ μν
c. {}: λ©μλμ ꡬνλΆ
public void test() {
syso();
}
//μ΅λͺ
λ©μλ(ν¨μ)
() -> {
syso();
}
μꡬμ¬ν] MyInterfaceλ₯Ό ꡬνν κ°μ²΄λ₯Ό μμ±νμμ€.
//1. ν΄λμ€ + κ°μ²΄
MyInterface m1 = new MyClass();
m1.test();
//2. μ΅λͺ
κ°μ²΄
MyInterface m2 = new MyInterface() {
@Override
public void test() {
System.out.println("μ΅λͺ
ν΄λμ€μμ ꡬνν λ©μλ");
}
};
m2.test();
//3. λλ€μ
MyInterface m3 = () -> {
System.out.println("λλ€μμΌλ‘ ꡬνν λ©μλ");
};
m3.test();
TestInterface t1 = new TestInterface() {
@Override
public void bbb() {
System.out.println("B");
}
@Override
public void aaa() {
System.out.println("A");
}
};
//The target type of this expression must be a functional interface
// TestInterface t2 = () -> {
// //aaa() or bbb()
// };
//
// t2.aaa();
// t2.bbb();
//μΆμ λ©μλ νμμ λ°λΌ..
//- λ§€κ°λ³μ O, X
//- λ°νκ° O, X
NoParameterNoReturn pr1 = new NoParameterNoReturn() {
@Override
public void call() {
System.out.println("pr1");
}
};
pr1.call();
NoParameterNoReturn pr2 = () -> {
System.out.println("pr2");
};
pr2.call();
//** λλ€μ ꡬνλΆμ μ€νλ¬Έμ₯ 1μ€μ΄λ©΄ {} μλ΅
NoParameterNoReturn pr3 = () -> System.out.println("pr3");
pr3.call();
//void call(int n)
ParameterNoReturn pr4 = (int n) -> {
System.out.println("pr4: " + n);
};
pr4.call(100);
pr4.call(200);
pr4.call(300);
//** λ§€κ°λ³μμ μλ£νμ μλ΅ν μ μλ€.
ParameterNoReturn pr5 = (n) -> {
System.out.println("pr5: " + n);
};
pr5.call(400);
//** λ§€κ°λ³μμ ()λ₯Ό μλ΅ν μ μλ€.
ParameterNoReturn pr6 = n -> {
System.out.println("pr6: " + n);
};
pr6.call(500);
ParameterNoReturn pr7 = n -> System.out.println("pr7: " + n);
pr7.call(600);
//void call(String name, int age);
MultiParameterNoReturn pr8 = (String name, int age) -> {
System.out.println("pr8: " + name + "," + age);
};
pr8.call("νκΈΈλ", 20);
MultiParameterNoReturn pr9 = (name, age) -> {
System.out.println("pr9: " + name + "," + age);
};
pr9.call("νκΈΈλ", 20);
//** λ§€κ°λ³μμ ()λ λ§€κ°λ³μκ° 1κ°μΌ λλ§ μλ΅ κ°λ₯νλ€.(μμλλ μλ΅ λΆκ°)
// MultiParameterNoReturn pr10 = name, age -> {
// System.out.println("pr10: " + name + "," + age);
// };
//int call();
NoParameterReturn pr11 = () -> {
return 100;
};
System.out.println("pr11: " + pr11.call());
//** ꡬνλΆμ returnλ¬Έμ΄ μ μΌνλ©΄, {}μ returnμ μλ΅ν μ μλ€.
NoParameterReturn pr12 = () -> 200;
System.out.println("pr12: " + pr12.call());
//int call(int a, int b);
ParameterReturn pr13 = (int a, int b) -> {
return a + b;
};
System.out.println("pr13: " + pr13.call(10, 20));
ParameterReturn pr14 = (a, b) -> a + b;
System.out.println("pr14: " + pr14.call(30, 40));
}//main
}//main class
//functional interface
//- μΆμ λ©μλλ₯Ό λ± 1κ°λ§ κ°μ§λ μΈν°νμ΄μ€
interface MyInterface {
void test();
}
class MyClass implements MyInterface {
@Override
public void test() {
System.out.println("MyClass ν΄λμ€μμ ꡬνν λ©μλ");
}
}
interface TestInterface {
void aaa();
void bbb();
}
interface NoParameterNoReturn {
void call();
}
interface ParameterNoReturn {
void call(int n);
}
interface MultiParameterNoReturn {
void call(String name, int age);
}
interface NoParameterReturn {
int call();
}
interface ParameterReturn {
int call(int a, int b);
}
Ex88
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i=0; i<20; i++) {
list.add((int)(Math.random() * 100) + 1);
}
System.out.println(list);
list.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(list);
//λλ€μ. μμ λκ°μ μ
list.sort((o1, o2) -> o2 - o1);
System.out.println(list);
'νλ‘κ·Έλλ° κ³΅λΆ > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LinkedList, TreeSet, TreeMap (0) | 2023.03.14 |
---|---|
μ΅λͺ ν΄λμ€(Anonymous Class), Sort (0) | 2023.03.14 |
[18μΌμ°¨] File (1), μ¬κ· λ©μλ (0) | 2023.03.05 |
[18μΌμ°¨] HashMap, HashSet (0) | 2023.03.05 |
[17μΌμ°¨] 컬λ μ - ArrayList, Stack, Queue (0) | 2023.03.04 |