람다 표현식 (Lambda Expression)
메소드 대신 하나의 식으로 표현하는 것
익명 함수 (Anonymous function)
반환타입 메소드 이름(매개변수,...) {
실행문;
}
public int sum(int x, int y) {
return x + y;
}
(매개변수,....) -> { 실행문 .... }
(int x, int y) -> { return x + y; }
람다식 장점
- 일반적으로 코드가 간결해짐
- 코드 가독성이 높아짐
- 생산성이 높아짐
람다식 단점
- 재사용이 불가능 (익명)
- 디버깅 어려움
- 재귀함수로는 맞지 않음
스트림 (Stream)
배열, 컬렉션 등의 데이터를 하나씩 참조하여 처리 가능한 기능
for문의 사용을 줄여 코드를 간결하게 함
스트림은 크게 3가지로 구성
- Stream 생성
- 중개 연산
- 최종 연산
데이터소스객체.Stream생성().중개연산().최종연산();
스트림 생성
배열 스트림
String[] arr = new String[]{"a", "b", "c"};
Stream stream = Arrays.stream(arr);
컬렉션 스크림
ArrayList list = new ArrayList(Arrays.asList(1, 2, 3));
Stream stream = list.stream();
스트림 중개연산
Filtering - filter 내부 조건에 참인 요소들을 추출
IntStream intStream = Intstream.range(1, 10).filter(n -> n % 2 == 0);
Mapping - map 안의 연산을 요소별로 수행
IntStream intStream = Intstream.range(1, 10).map(n -> n + 1);
스트림 최종연산
Sum, Average
IntStream.range(1, 5).sum();
IntStream.range(1, 5).average().getAsDouble();
min, max
IntStream.range(1, 5).min().getAsInt();
IntStream.range(1, 5).max().getAsInt();
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main6 {
public static void main(String[] args) throws IOException {
System.out.println("[===== 람다식, 스트림 =====]");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = Arrays
.stream(br.readLine().split(" ")) // 공백을 기준으로 분리
.mapToInt(Integer::parseInt) // int형으로 형변환
.sorted() // 오름차순으로 정렬
.toArray(); // 배열에 담기
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
int[] oddArr = Arrays
.stream(br.readLine().split(" ")) // 공백을 기준으로 분리
.mapToInt(Integer::parseInt) // int형으로 형변환
.filter(x -> x % 2 != 0) // 홀수만
.sorted() // 오름차순으로 정렬
.toArray(); // 배열에 담기
for (int num : oddArr) {
System.out.print(num + " ");
}
System.out.println();
br.close();
}
}
'📌Zero-base' 카테고리의 다른 글
property.html 파일 만드는 코드 작성하기 제로베이스 백엔드 스쿨 깜짝과제 1번 (0) | 2024.05.13 |
---|---|
백엔드 신입 개발자가 쌓아야 하는 역량은? 제로베이스 백엔드스쿨 (0) | 2024.05.01 |
코딩테스트 힌트 문제 풀기 2 (프로그래머스, 백준) 자바 (0) | 2024.04.29 |
코딩테스트 힌트 문제 풀기 (프로그래머스, 백준) 자바 (1) | 2024.04.23 |
앞으로의 백엔드 개발자가 되기 위한 공부 계획 (feat. 백엔드 공부법) 제로베이스 백엔드스쿨 (0) | 2024.04.22 |