CHANGEL
SOLID BASICS
CHANGEL

공지사항

  • DEV.CHANGEL PROFILE
  • SOLID BASIC (289)
    • 공부 STUDY (115)
      • JAVA (57)
      • C | C++ (34)
      • CS (11)
      • MySQL (2)
      • ALGORITHM (1)
      • HTML (2)
      • CSS (2)
      • JS (2)
      • CODING (0)
      • MINI PROJECT (3)
    • 스프링 SPRING (21)
      • [SPRING] 김영한 스프링 입문 (11)
      • [SPRING] 남궁성 스프링의 정석 (1)
      • [SPRING] 스프링 핵심원리 (9)
    • 전공 수업 CS (65)
      • Computer Network (13)
      • algorithms (21)
      • Computer Architecture (7)
      • Software Engineering (4)
      • Data Structure (2)
      • DataBase (1)
      • Digital Engineering (14)
      • Discrete Mathematics (3)
      • Introduction to programming (0)
      • Mobile Software (0)
      • Intelligence and Informatio.. (0)
    • 대외활동 (35)
      • 신한은행 대학생 홍보대사 34기 (8)
      • SKT T프렌즈 5기 (13)
      • SK DEVOTION YOUNG 1기 (9)
      • 성균관 대학교 공학교육혁신센터 수강 (3)
      • 수상 기록 (1)
    • 솝트 33기 안드로이드 (7)
      • [솝트 33기] 회고록 (0)
      • [솝트 33기] 안드로이드 왕초보 스터디 (2)
      • [솝트 33기] 코틀린 스터디 (0)
      • [솝트 33기] Git을 털어보자 깃털 스터디 (4)
    • 멋쟁이사자처럼 11기 (6)
      • 멋사 회고록 (4)
      • 백엔드 세션 (1)
      • 기획 세션 (1)
      • 연합해커톤 운영단 (기획팀) (0)
    • 백준 BAEKJOON (16)
    • 독서 BOOK (10)
    • 자격증 CERTIFICATE (1)
    • 준비 서류 및 회고록 MEMOIR (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

최근 댓글

인기 글

CHANGEL
공부 STUDY/JAVA

[JAVA] 람다식이란? 람다식 사용 방법에대해 알아보자!

[JAVA] 람다식이란? 람다식 사용 방법에대해 알아보자!
공부 STUDY/JAVA

[JAVA] 람다식이란? 람다식 사용 방법에대해 알아보자!

2023. 1. 23. 07:39

 람다식이란? 

람다식이란 "식별자없이 실행가능한 함수"이다.

함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식이라고 생각하시면 된다.

함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌다.

 

람다식 사용법

(매개변수, ...) -> { 실행문 ... }

(매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 한다. 매개 변수의 이름은 개발자가 자유롭게 지정할 수 있으며 인자타입도 명시하지 않아도 된다.-> 기호는 매개 변수를 이용해서 중괄호 { } 바디를 실행한다는 뜻으로 해석하면 됨.

 

예제

@FunctionalInterface
interface Say{
    int someting(int a,int b);
}
class Person{
    public void hi(Say line) {
	int number = line.someting(3,4);
	System.out.println("Number is "+number);
    }
}

예를들기 위해 Person이라는 Class와 Say라는 Functional Interface를 만들었다.

※ Functional Interface란 함수가 하나만 존재하는 Interface를 의미함!

람다식 사용X

Person rin = new Person();
rin.hi(new Say() {
    public int someting(int a, int b) {
	System.out.println("My Name is Coding-Factory");
	System.out.println("Nice to meet you");
	System.out.println("parameter number is "+a+","+b);
	return 7;
    }
});

 

람다식 사용O

Person rin = new Person();
rin.hi((a,b) ->{
	System.out.println("This is Coding-Factory!");
	System.out.println("Tank you Lamda");
	System.out.println("parameter number is "+a+","+b);
    return 7;
});

 

 람다식의 장단점 

람다식 장점

1. 코드를 간결하게 만들 수 있다.

2. 코드가 간결하고 식에 개발자의 의도가 명확히 드러나므로 가독성이 향상된다.

3. 함수를 만드는 과정없이 한번에 처리할 수 있기에 코딩하는 시간이 줄어듦.

4. 병렬프로그래밍이 용이함.

 

람다식 단점

1. 람다를 사용하면서 만드는 무명함수는 재사용이 불가능하다.

2. 디버깅이 다소 까다롭더,

3. 람다를 남발하면 코드가 지저분해질 수 있다.

4. 재귀로 만들경우에는 다소 부적합한면이 있다.

 

 람다식 간단예제 

1. 두개의 숫자 더하기

interface Compare{
    public int compareTo(int a, int b);
}

public class Ramda2 {
    //람다식 문법 (매개변수 목록)->{실행문}
    public static void exec(Compare com) {
        int k = 10;
	int m = 20;
	int value = com.compareTo(k, m);
	System.out.println(value);
    }
    public static void main(String[] args) {
	exec((i,j)->{
	    return i+j;
	});
    }
}

 

2. 두개의 숫자중 큰 수 찾기

import extendsss.main;
public class Ramda3 {
    @FunctionalInterface//함수형 인터페이스 체크 어노테이션
    public interface MyNumber{
	  int getMax(int num1, int num2);
    }
    public static void main(String[] args) {
	  MyNumber max = (x,y)->(x>=y)? x:y;
	  System.out.println(max.getMax(10, 30));
    }
}

 

3. Runnable 인스턴스 생성

public class RunnableEx {
    public static void main(String[] args) {
        Runnable runnable = () -> {
            for (int i = 0; i < 30; i++) {
                System.out.println(i);
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

 

4. Thread 호출

Thread thread = new Thread( () -> {
    for (int i = 0; i < 10; i++) {
        System.out.println(i);
    }
});

'공부 STUDY > JAVA' 카테고리의 다른 글

[JAVA] 사용자 정의 예외 클래스 구현하기 | 아이디 설정 조건에서 예외 발생에대한 클래스를 구현해보자! | 사용자 정의 예외  (0) 2023.01.23
[JAVA] 자바의 예외처리(Exception) | try-catch-finally 문, try-with-resource 문  (0) 2023.01.23
[JAVA] 스트림(Stream)이란 무엇일까?  (0) 2023.01.23
[JAVA] 내부 클래스(inner class)와 익명 클래스(anonymous class)에대해 알아보자  (1) 2023.01.21
[자바/ 자료구조] 컬렉션 프레임워크 공부 전, 자료구조를 간단히 정리해보자!  (0) 2023.01.21
  •  람다식이란? 
  • 람다식이란 "식별자없이 실행가능한 함수"이다.
  • 람다식 사용법
  • 예제
  • 람다식 사용X
  • 람다식 사용O
  •  람다식의 장단점 
  •  람다식 간단예제 
  • 1. 두개의 숫자 더하기
  • 2. 두개의 숫자중 큰 수 찾기
  • 3. Runnable 인스턴스 생성
  • 4. Thread 호출
'공부 STUDY/JAVA' 카테고리의 다른 글
  • [JAVA] 사용자 정의 예외 클래스 구현하기 | 아이디 설정 조건에서 예외 발생에대한 클래스를 구현해보자! | 사용자 정의 예외
  • [JAVA] 자바의 예외처리(Exception) | try-catch-finally 문, try-with-resource 문
  • [JAVA] 스트림(Stream)이란 무엇일까?
  • [JAVA] 내부 클래스(inner class)와 익명 클래스(anonymous class)에대해 알아보자
CHANGEL
CHANGEL
NOT GIVING UP | SOLID BASICS

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.