스트림을 사용한 예제는 다음과 같다.
List<Car> benzParkingLot =
carsWantToPark.stream()
.filter((Car car) -> car.getCompany().equals("Benz"))
.toList();
stream()
을 이용해 carsWantToPark
의 스트림 값을 받아온다.filter()
메서드로 함수를 파라미터로 전달한다.false
를 반환한 스트림의 원소들을 제거한다.toList()
메서드로 해당 결과를 다시 컬렉션으로 묶어준다.풀어서 보면, 다음과 같은 코드라고 할 수 있다.
ArrayList<Car> benzParkingLotWithoutStream = new ArrayList<>();
for (Car car : carsWantToPark) {
if (car.getCompany().equals("Benz")) {
benzParkingLotWithoutStream.add(car);
}
}
✔️ 자주 사용되는 스트림 API
stream()
: 컬렉션(List, Set 등)에서 스트림을 생성한다. List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
forEach()
: 각 요소를 처리한다. List<String> names = List.of("Alice", "Bob", "Charlie");
names.stream().forEach(System.out::println);
// 출력:
// Alice
// Bob
// Charlie
map()
: 요소를 변환한다. List<String> names = List.of("Alice", "Bob", "Charlie");
List<Integer> lengths = names.stream()
.map(String::length)
.collect(Collectors.toList());
System.out.println(lengths); // 출력: [5, 3, 7]
filter()
: 조건에 맞는 요소만 남긴다. List<Integer> numbers = List.of(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 출력: [2, 4]
배열(Array)은 길이를 동적으로 변경할 수 없고, 데이터를 추가하기 불편하다는 단점이 있다. 이런 단점을 해결할 수 있는 자료구조를 리스트(List)라 한다.
✔️ ArrayList의 빅오 정리
✔️ LinkedList의 빅오 정리
오늘은 20분 늦게 일어나서 지각을 해버렸다. 그 전날 일찍 자고 일찍 일어나는 습관을 들이자..! 이제 다시 새로운 과제가 시작되었다. 다음주 월요일까지 다시 열심히 달려야겠다. 스프링 들어가기 전에 미리 스프링 입문 강의를 듣고 싶었는데 들을 수 있을지 모르겠다. 일단 최선을 다해보자.