Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 넥사크로
- react
- setrealrowsize
- 로딩이미지변경
- 싱글톤컨테이너
- 코딩
- 톰캣실행
- aws
- WITH절
- DB #데이터베이스
- loadingimage
- cron표현식
- 빈
- flex-basis
- 넥사크로loadingimage
- singleton container
- flex-grow
- annotaion
- Grid
- gif초기화
- 스프링 빈
- 싱글톤
- 마진상쇄
- CSS
- decoratetext
- singleton
- BEAN
- Spring
- frontend
- HTML
Archives
- Today
- Total
All Day Tired
람다식, 익명클래스 본문
강의를 듣는데 과제가 람다식과 익명클래스에 관한 내용...
둘 다 학원에서 배우고 열심히 사용했으나 일하면서 즈어언혀 쓰지 않아서 다 까먹고 모름...
람다식이 등장한 이유
간결하고 직관적인 코드 작성을 위해서 등장
기존 자바 코드는 특정 작업을 수행하기 위해 익명클래스를 사용함
하지만 익명클래스는 코드가 장황하고 읽기 어려움 -> 단점
그래서 함수형 프로그래밍의 개념을 자바에 도입하면서 데이터 처리, 조작 작업을 더 효율적으로 할 수 있는 람다식이 등장
람다식?
람다식은 자바 8에 도입된 기능이다.
람다식 = 익명함수
작업을 수행하려면 보통 메소드를 먼저 만드는데 람다식은 메소드를 만들지 않고 작업을 수행하는 코드 블록만으로 표현할 수 있다.
(a, b) -> a + b //a, b 값을 받아서 더해
람다식과 익명클래스의 관계
람다식은 익명클래스를 대체 가능(애초에 등장 배경이 이거때문)
익명클래스는 이름없는 클래스를 만들어 일회성으로 사용, 특정 인터페이스를 구현하는 경우 자주 사용 -> 하지만 코드가 길고 반복 작업에는 불편
//익명클래스 사용
Runnable task = new Runnable(){
@Override
public void run(){
System.out.println("hello");
}
};
//람다식 사용
Runnable task = () -> System.out.println("hello");
람다식 문법
(매개변수) -> {실행 코드}
//두 숫자더하기
(int a, int b) -> {return a + b;}
//매개변수가 하나면 괄호 생각 가능
x -> x * 3
//실행 코드가 한 줄이면 중괄호, return 생략 가능
(a, b) -> a + b
@FunctionalInterface
람다식은 함수형 인터페이스와 함께 사용된다.
함수형 인터페이스는 딱 하나의 추상메소드만 가지는 인터페이스이다.
그래서 Runnable을 람다식으로 표현할 수 있었던 것(Runnable 인터페이스는 run()이라는 메소드 하나만 가지고 있기 때문)
스트림API
람다식은 스트림API와 자주 함께 사용된다.
스트림API는 컬렉션(리스트, 배열) 데이터를 처리할 때 반복문 대신 간결하고 직관적인 방식으로 처리
//리스트에서 짝수만 추출
List<Integer> nums = Arrays.asList(1,2,3,4,5,6);
nums.stream()
.filter(n -> n % 2 == 0)
.forEach(System.out::println);
메소드 레퍼런스
람다식을 더더 간단히 표현하는 방법
특정 메소드를 직접 참조해 호출
List<String> colors = Arrays.asList("red", "pink", "blue", "green");
names.forEach(System.out::println); //메소드 레퍼런스 사용
names.forEach(name -> System.out.println(name)); //람다식 사용
'Back > Java' 카테고리의 다른 글
Annotation (0) | 2024.11.26 |
---|---|
JDK, JRE, JVM (0) | 2024.10.14 |
Optional (1) | 2024.09.19 |
Comments