728x90
▶람다식 사용방법
package com.test.lamda;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class Lamda { //함수형프로그램에서 중요한 표기법 중에 하나 (중요함★)
public static void main(String[] args) {
//원래 객체 만드는 형식 A a = new A();
//(예)a =b+c 에서-> oprator->연산자/a,b,c: oprand ->연산항/= (할당연산자)
//=============================================================
/* 이해 안될 수 있어서 만들다가 넘어감
new My
System.out.println(new MyLamdaFunction() { //객체
public int max(int a, int b) { //메서드
return a > b ? a : b; //3항연산자(선택조건절)
}
}.max(3,5) ); //.max(3,5)-> max()메서드를 호출한 것
*/
//=============================================================
MaxCal maxCal = new MaxCal(); //객체생성
System.out.println(maxCal.sum(3, 5)); //원래 방식
MyLamdaFunction myLamdaFunction = (int a, int b) -> a + b; //실제메서드 내용을 여기서 구현 한 것//Lamda 식으로 작성 ->장점) 코드수를 줄일 수있다 단점) 난해하다
System.out.println(myLamdaFunction.sum(3, 5)); //타입이 MyLamdaFunction 이기때문에 람다식으로 초기화를 해주는(람다식 내용이 오버라이딩 됨)
PrintLamda printLamda = () -> "Hello World"; //람다식-> 매개변수 없고 단순히 "Hello World"리턴 하라는 내용
System.out.println(printLamda.printL());
System.out.println("=============자바가 지원하는 함수형 인터페이스 4개 =================");
//Supplier,Consumer, Function, Predicate ->자바가 제공해주는 4개의 인터페이스 (람다식을 제공하기위해)
//메개변수 없이 반환값만 받는 함수형 인터페이스
Supplier<String> supplier = () -> "Hello, evryone";
// 매개변수 없음 리턴값
System.out.println(supplier.get()); //get()메서드로 불러와서 출력
//1개의 매개변수를 받아서 사용한 후 반환하는 함수형 인터페이스
//consumer ->매개변수1개일때 사용
Consumer<String> consumer = (str) ->System.out.println(str.split(" ")[0]);
// 매개변수 1개 리턴값 문자를 쪼갬
consumer.andThen(System.out::println).accept("Hello Java");//andthen ->위에 식을 실행하고 해당식을 실행??
//Function<T,R> 펑션함수형프로그램
//객체 T를 매개변수로 받아서 처리한 후에 R로 반환하는 함수형 인터페이스
Function<String, Integer> function = str -> str.length(); //str.length()->데이터 개수를 리턴
System.out.println(function.apply("안녕하세요"));
Function<Integer, Integer> sum = a -> a+2; //매개변수 하나는->integer 하나는->null값처리해서 a+2를 반환
System.out.println(sum.apply(3));
//Predicate<T>
//객체 T를 매개변수로 받아서 처리한 후 Boolean을 반환
Predicate<String> predicate = (str) -> str.equals("kkk"); //문자열을 비교
System.out.println(predicate.test("qqq"));
System.out.println("=============자바가 지원하는 함수형 인터페이스 4개 끝=================");
System.out.println("=============메소드 참조=================");
//메소드 참조
//Function<String, Integer> function = str -> str.length(); 를 더 간편하게
Function<String, Integer> func = String::length; //str(변수명)-> 타입으로(String) //조건이 있음..
System.out.println(func.apply("안녕하세요"));
System.out.println("=============메소드 참조 끝=================");
System.out.println("================String클래스의 split메서드 사용법============");
String s= "kim-txt-test";
System.out.println("기존문자열: "+s);
//System.out.println(s.split(" ")); //괄호안의 기준으로 쪼갬
String [] sp = s.split("-"); //"-" 기준으로 쪼갠 후-> String 타입의 배열에 담음(3개로 쪼개짐)
System.out.println(sp[0]); //배열의 0번째 인덱스 값 출력
System.out.println(sp[1]); //배열의 1번째 인덱스 값 출력
System.out.println(sp[2]); //배열의 2번째 인덱스 값 출력
System.out.println("============================");
A aa = new A();
System.out.println("곱하기 결과는="+aa.multi(3, 5));
}//MainMethod end
public static int calMax() {
int a = 2;
MaxCal maxCal1 =new MaxCal();
a = maxCal1.sum(3, 4);
return a;
}//claMax Method end
}//MainCLass end
//----------------------------------interface MyLamdaFunction---------------------------
@FunctionalInterface //람다식을 이용한 함수라는 것을 알려주는 어너테이션
interface MyLamdaFunction{ //인터페이스라서 메인에서 객체생성시 구현을 해줌
int sum(int a, int b);
}//interface end
//----------------------------------MaxCal class---------------------------
class MaxCal{
public int sum(int a, int b) {
return a > b ? a : b; //3항 연산자
}//Method end
}//MaxCall class end
//----------------------------------PrintLamda class---------------------------
@FunctionalInterface
interface PrintLamda{
String printL(); //String 값을 리턴
}
//----------------------------------AA interface---------------------------
interface AA{
int multi(int a, int b);
}
//----------------------------------A class---------------------------
class A implements AA{
@Override
public int multi(int a, int b) {
return a*b;
}
}
728x90
'국비교육과정 > JAVA' 카테고리의 다른 글
[JDBC] MariaDB-연결-Java (0) | 2022.03.17 |
---|---|
★JFrame활용 코드 (0) | 2022.03.17 |
★JDBCConnection 코드 (0) | 2022.03.17 |
9일차 (0) | 2022.03.17 |
★Stream 중요코드 (0) | 2022.03.16 |
댓글