본문 바로가기
  • Welcome J-Kyu Tstory
국비교육과정/JAVA

★Lamda 중요코드

by regularity 2022. 3. 16.
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

댓글