
(타입 매개변수) -> { 실행문; }
interface ExFunctionInterface {
public void method();
}
//public class ExFunctionInterfaceTest {
// public static void main(String[] args) {
// ExFunctionInterface test = new ExFunctionInterface() {
// public void method() {
// System.out.println("test");
// }
// };
// test.method();
// }
//}
public class ExFunctionInterfaceTest {
public static void main(String[] args) {
ExFunctionInterface test = () -> System.out.println("test");
test.method();
}
}
@FunctionalInterface라는 어노테이션을 붙일 수 있음중간연산 : 연산 결과가 스트림, 연속해서 수행 가능최종연산 : 연산 결과가 스트림이 아님, 스트림의 요소를 소모하기 때문에 단 한 번만 가능| 최종연산 | 설명 |
|---|---|
| void forEach(Consumer <? super T> action) | 각 요소에 지정된 작업 수행 |
| long count() | 스트림의 요소 개수 |
| Optional < T > max (Comparator <? super T> comparator) | 스트림의 최댓값 |
| Optional < T > min (Comparator <? super T> comparator) | 스트림의 최솟값 |
| Optional < T > findAny() | 아무거나 하나 |
| Optional < T > findFirst() | 첫번째 요소 |
| boolean allMatch(Pradicate < T > p) | 모두 만족하는지? |
| boolean anyMatch(Pradicate < T > p) | 하나라도 만족하는지? |
| boolean noneMatch(Pradicate < T > p) | 모두 만족하지 않는지? |
| Object[] toArray() | 스트림의 모든 요소를 배열로 return |
reduce() : 스트림의 요소를 하나씩 줄여가면서 계산
collect() : 스트림의 요소를 수집함, 주로 요소를 그룹화하거나 결과를 컬렉션에 담아 반환하는데 사용됨
List<String> sortedList = strStreamList.sorted().collect(Collectors.toList());
스트림은 데이터 소스로부터 데이터를 읽기만 함. 정렬된 결과가 필요할 경우, collect를 활용해서 컬렉션이나 배열에 담아 return 할 수 있음
List<String> sortedList = strStreamList.sorted().collect(Collectors.toList());
스트림은 한 번 사용하면 닫혀서 다시 사용할 수 없음. 필요하다면 다시 생성해야 함
내부 반복이란 반복문을 메서드 내부에 숨길 수 있다는 것을 의미. forEach()는 스트림에 정의된 메서드 중의 하나로 매개변수에 대입된 람다식을 데이터 소스의 모든 요소에 적용함. 즉 forEach()는 메서드 안에 for 문을 넣은 것임
strStreamArr.sorted().forEach(System.out::println);
최종 연산이 수행되기 전까지는 중간 연산이 수행되지 않음. 중간 연산은 어떤 작업이 수행되어야 하는지 지정해주는 역할일 뿐임.
오토박싱, 언박싱으로 인한 비효율을 줄이기 위해 데이터 소스의 요소를 기본형으로 다루는 IntStream, LongStream, DoubleStream이 제공됨
// 오토 박싱 - Deprecated
int i = 10;
Integer num = i;
// 오토 언박싱 - Deprecated
Integer num = new Integer(10);
int i = num;
int sum = strStream.parallel().mapToInt(s -> s.length()).sum;