람다식을 쓰기 위한 인터페이스
@FunctionalInterface
제네릭 활용
@FunctionalInterface
interface LambdaPractice6<T> {
T getResult(T a, T b);
// void aaa();
}
LambdaPractice6<Integer> p6=(a,b)->a+b;
p6.getResult(10,5);
LambdaPractice6<String> p61=(a,b)->a+b;
p61.getResult("a","b"); // = "ab"
@FunctionalInterface
interface LambdaPractice7<T,R> {
R getResult(T a, T b);
}
// String 변수 자료형, Integer는 리턴타입
LambdaPractice7<String,Integer> p7=(a,b)->a.length()+b.length();
p7.getResult("뿡","123"); // 4 리턴
Predicate<T> -> boolean test(T t)
Supplier<T> -> T get()
Consumer<T> -> void accept(T t)
Function<T,R> -> R apply(T t)
public static void printEvenOfList(List<Integer> list){
for (int e :list){
if (e%2==0){
System.out.print(e+" ");
}
}
}
public static void printOddOfList(List<Integer> list){
for (int e :list){
if (e%2==1){
System.out.print(e+" ");
}
}
}
public static void printEvenSumOfList(List<Integer> list){
int result=0;
for (int e :list){
if (e%2==0){
result+=e;
}
}
System.out.print(result+" ");
}
public class DefinedFunctionalTest {
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
DefinedFunctional.printEvenOfList(list);
DefinedFunctional.printOddOfList(list);
DefinedFunctional.printEvenSumOfList(list);

public static void printOfList(List<Integer> list, Predicate<Integer> P){
for (int e:list){
if (P.test(e)){
System.out.println(e);
}
}
}
Predicate<Integer> p= (a)->a%2==0;
DefinedFunctional.printOfList(list,p);
DefinedFunctional.printOfList(list,(num)->num%2==0);
+)
DefinedFunctional.printOfList(list,(num)->num%2!=0);
DefinedFunctional.printOfList(list,(num)->num>3);
for (int i=0;i<list.size();i++){
if (list.get(i)%2==0){
list.remove(i);
i--;
}
}
//짝수만 삭제됐는지 확인
for (int e:list){
System.out.print(e+" ");
}
Predicate<Integer> p1=(num)->num>2;
list.removeIf(p1);
위와같음
list.removeIf(num->num>2);
list.forEach(num-> System.out.println(num));
위와 같음
// 메서드 참조
list.forEach(System.out::println);