✏️ 0503
개인과제 재제출
팀 과제 분배
Java 문법 종합반 강의_5주차
Java 문법 종합반_5주차
스트림은 한 번 더 추상호된 자료구조와 자주 사용하는 프로그래밍 API 를 제공한 것
자료구조를 한 번 더 추상화했기 때문에 자료 구조의 종류에 상관없이 같은 방식으로 다룰 수 있다
병렬 처리에 유리한 구조로 조건부로 성능도 챙길 수 있다
자료구조의 '흐름'을 객체로 제공해주고, 그 흐름동안 사용할 수 있는 메서들을 API로 제공해 주고 있는 것
- 스트림의 특징
- 원본 데이터를 변경하지 않는다
- 자바 컬렉션으로부터 스트림(해당 컬렉션의 흐름을 받아서 한 번 사용한다
- 일회용, 한 번 사용한 스트림은 어디에도 남지 않는다
List<Car> benzParkingLot =
// carsWantToPark의 스트림값을 받아와서
carsWantToPark.stream()
// 거기 구현되어 있는 filter()메서드를 사용합니다.
// filter메서드는 함수를 파라미터로 전달받습니다.
// 여기서 함수는 제조사가 벤츠면 true를 반환하는 함수네요.
// 필터 메서드는 이름처럼 false를 반환한 스트림의 원소들을 제거합니다.
.filter((Car car) -> car.getCompany().equals("Benz"))
// 이 결과도 반환을 받아서 다시 리스트로 묶어줍니다.
.toList();
- 스트림 객체를 받는다
- 해당 객체는 자료구조의 모든 원소가 있다
- filter() 같은 이미 구현된 메서드도 있다
- filter() 메서드는 true/false 값을 return 하는 함수를 파라미터로 전달받는다
- filer() 메서드는 스트림에 들어있는 모든 원서에 파라미터로 전달받는 함수를 실행시켜본다
- flase 가 나온 원소를 제거한 스트림을 반환해준다
- 해당 결과를 다시 컬렉션으로 묶어주는 메서드도 정의되어 있다
위의 코드는
ArrayList<Car> benzParkingLotWithoutStream = new ArrayList<>();
for (Car car : carsWantToPark) {
if (car.getCompany().equals("Benz")) {
benzParkingLotWithoutStream.add(car);
}
}
이 코드와 동일한 일을 수행하고 있는 것!
'개발 일지 > TIL' 카테고리의 다른 글
[ #17 ] TIL (0) | 2024.05.08 |
---|---|
[ #16 ] TIL (2) | 2024.05.07 |
[ #14 ] TIL (0) | 2024.05.02 |
[ #13 ] TIL (개인과제 Level 2) (1) | 2024.05.01 |
[ #12 ] TIL (개인과제 Level 1) (1) | 2024.04.30 |