filter는 Stream의 가공하기 단계에, forEach는 결과만들기 단계에 해당한다.
우선 forEach는 배열이나 컬랙션의 각요소들에 대하여 실행하는 것이다.
주로 System.out.println()을 이용하여 각요소들을 출력하는데 사용된다.
그리고 filter는 if문과 비슷하다고 느꼈다.
안에 조건을 넣고 해당 조건과 일치하는 요소들만 forEach에서 주어진 코드를 실행하도록 할 수 있다.
private final List<Car> cars = new ArrayList<Car>();
cars.stream().filter(car -> car.getDistance() == distance).forEach(car ->{
System.out.println(car.get());
})
cars안의 들어있는 요소는 Car클래스 요소이다.
이를 하나씩 car이라는 객체로 가져와 stream.filter()을 이용하여 List에 있는 각요소들중 distance와 같은 값을 가지는 요소들을 forEach를 통하여 출력하는 것이다.
boolean 값을 반환하여야하고 true인 값들을 forEach를 수행하게 된다.
private final List<Car> cars = new ArrayList<Car>();
cars.stream().filter(car -> car.isCanMove()).forEach(car -> {
car.move();
});
위 코드는 코드 일부를 가져온 것인데 cars에서 stream을 이용하여 각 요소에서 주어진 작업을 수행한다.
cars.stream().filter(car -> car.isCanMove())
cars안의 들어있는 요소는 Car클래스 요소이다.
이를 하나씩 car이라는 객체로 가져와 내부 함수인 car.isCanMove()를 실행시킨다.
isCanMove는 boolean값을 반환하고 만약 이 값이 true라면 해당 요소를 forEach로 가져가게 되는것이다.
반응형
'Java > Stream' 카테고리의 다른 글
Java stream (0) | 2023.11.02 |
---|