람다는 프로그래밍에서 사용되는 언어로 흔히들 익명함수를 나타내는 용어이다.
자바 8 이전의 버전에서는 추상메서드를 사용하기 위해 인터페이스를 상속받아 메서드를 구현하거나 익명클래스를 이용해 메서드를 구현해줘야 했다.
public class Main {
public static void main(String[] args) {
Cal add = new Cal() {
@Override
public int cal(int a, int b) {
return a + b;
}
};
System.out.println(add.cal(1, 2));
}
}
interface Cal {
int cal(int a, int b);
}
위에 이러한 코드가 자바 8에서 람다가 나오며 훨씬 간편해진다. 여기서 람다란 메소드 표현식을, 메서드 타입, 메서드 이름, 매개변수 타입, 중괄호, return 문을 생략하고, 화살표 기호를 넣은 것이다.
int add(int a, int b){
return a + b;
}
이게
(a, b) -> a + b 이렇게 된다.
이런 방식으로 위의 코드를 줄이면
public class Main {
public static void main(String[] args) {
Cal add = (int a, int b) -> a + b;
System.out.println(add.cal(1,2));
}
}
interface Cal{
int cal(int a, int b);
}
이렇게 바꾸어 코드의 가독성과 개발시간을 줄일 수 있게 된다.
스트림이란 기존 자바에서 데이터를 저장하기 위해 배열이나, 컬렉션 프레임워크를 이용해왔는데 저기에 저장된 데이터들에 접근하기 위해선 반복문이나 iterator를 사용해야하기 때문에 매번 번거롭게 코드를 작성해야했다.
이러한 문제점들을 극복하기 위해 나온 것이 스트림이다.
스트림의 특징은 크게 3가지인데
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> num = Arrays.asList(1, 2, 3, 4, 5, 6);
num.stream()
.filter(n -> n % 2 == 0)
.forEach(System.out::println);
}
}