본문 바로가기

개발 일지/TIL

[ #15 ] TIL

✏️ 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();

 

  1. 스트림 객체를 받는다
  2. 해당 객체는 자료구조의 모든 원소가 있다
  3. filter() 같은 이미 구현된 메서드도 있다
  4. filter() 메서드는 true/false 값을 return 하는 함수를 파라미터로 전달받는다
  5. filer() 메서드는 스트림에 들어있는 모든 원서에 파라미터로 전달받는 함수를 실행시켜본다
  6. flase 가 나온 원소를 제거한 스트림을 반환해준다
  7. 해당 결과를 다시 컬렉션으로 묶어주는 메서드도 정의되어 있다

 

위의 코드는

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