
밑 내용을 읽다 보면 함수를 나타내는 또는 표현 하는 이라는 단어들이 나올텐데 여기서의 함수는 입력을 받아서 표현하는 작은 단위의 코드를 의미한다.
Stream.map(Function 인터페이스)
map은 기존에 있는 리스트를 값을 변경 해서 새로운 list를 만들때 사용하며 Function 인터페이스를 소유하고 있다.
Function<T(매개변수),R(반환타입)> 인터페이스는 특정 객체를 받아서 특정 객체를 반환하는 추상 인터페이스로 추상메소드 apply( )는 T타입의 객체를 입력으로 하고 R타입의 객체를 반환한다
예제 코드
//Function 인터페이스 형태
public interface Function<T,R>{
R apply(T t)
}
package ex14.exaple1;
import java.util.Arrays;
import java.util.List;
public class CopyEx02 {
public static void main(String[] args) {
List<Integer>list = Arrays.asList(1,2,3,4);
//.stream은 흙을 뿌린다.(값을 하나 씩 타입을 벗겨 모래에 버린다.)
// map이라는건 흙이 묻은 값들을 물을 뿌려 씻겨준다고 보면된다.
//map - 가공해서 복사한다.
List<Integer> newList = list.stream().map(i -> i*100).toList();
//.to list는 list의 저장하는 문법
//출력하는데 forEach()사용
newList.stream().forEach(i -> System.out.println(i));//Consumer 인터페이스 사용
}
}
Stream.filter(Predicate 인터페이스)
filter는 주어진 조건에 맞는 list의 저장된 값만 출력 하고 싶을 때 사용 하며 Predicate 인터페이스를 소유하고 있다.
Predictae 인터페이스는 단일 값을 매개 변수로 사용하고 true 또는 False를 반환한다.
예제 코드
package ex14.exaple1;
import java.util.Arrays;
import java.util.List;
public class CopyEx03 {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1,2,3,4);
//filter Stream은 컬렉션에서 지원
List<Integer> newList = list.stream().filter(i -> i < 3).toList();
//.to list는 list의 저장한는 문법
newList.stream().forEach(i-> System.out.println(i));
} //출력하는데 forEach()사용
}
Stream.forEach(Consumer 인터페이스)
Consumer 인터페이스는 값을 반환하지 않고 값을 소비하는 함수를 나타낸 함수형 인터페이스로
Consumer 구현은 값을 인쇄하거나 파일에 기록하거나 네트워크 등을 통해 값을 전달하는 객체가 될 수 있다.
윗 예제들의 값을 출력할 때 Counmser 인터페이스를 사용한 것처럼 사용한다.
예제 코드
Consumer<Integer> consumer = (value) -> System.out.println(value);
Supplier 인터페이스
우리가 사용 할 일은 없겠지만 알고만 코드를 읽을 수는 있게 알고 있기
Supplier 인터페이스는 값을 제공하는 함수를 나타내는 함수형 인터페이스이다.
예제 코드
Supplier<Integer> supplier = () -> new Inger((int) (Math.random() * 100));
Share article