[내배캠/14일차] TIL - Stream, ArrayList & LinkedList, 키오스크 과제 발제

euphony·2025년 1월 13일
0

내일배움캠프

목록 보기
29/66

✅오늘의 한 일

  • 자바 문법 종합반 5주차 완료
  • 키오스크 과제 요구사항 정리
  • 자바 중급2 섹션4 ~ 섹션5 듣기

💻오늘의 학습

자바 문법 종합반 5주차

스트림

  • 스트림(Stream) : 한 번 더 추상화된 자료구조와 자주 사용하는 프로그래밍 API를 제공한 것.
    • 원본의 데이터를 변경하지 않는다.
    • 일회용으로, 한 번 사용한 스트림은 어디에도 남지 않는다.

스트림을 사용한 예제는 다음과 같다.

List<Car> benzParkingLot =
                carsWantToPark.stream()
                        .filter((Car car) -> car.getCompany().equals("Benz"))
                        .toList();
  1. stream()을 이용해 carsWantToPark의 스트림 값을 받아온다.
  2. filter()메서드로 함수를 파라미터로 전달한다.
  3. false를 반환한 스트림의 원소들을 제거한다.
  4. 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]

자바 중급2편 강의

배열(Array)은 길이를 동적으로 변경할 수 없고, 데이터를 추가하기 불편하다는 단점이 있다. 이런 단점을 해결할 수 있는 자료구조를 리스트(List)라 한다.

  • 배열 : 순서가 있고 중복을 허용, 크기가 정적으로 고정됨.
  • 리스트 : 순서가 있고 중복을 허용, 크기가 동적으로 변할 수 있음.

ArrayList

✔️ ArrayList의 빅오 정리

  • 데이터 추가
    • 마지막에 추가: O(1)
    • 앞, 중간에 추가: O(n)
  • 데이터 삭제
    • 마지막에 삭제: O(1)
    • 앞, 중간에 삭제: O(n)
  • 인덱스 조회: O(1)
  • 데이터 검색: O(n)

LinkedList

✔️ LinkedList의 빅오 정리

  • 데이터 추가
    • 앞에 추가: O(1)
    • 뒤, 중간에 추가: O(n)
  • 데이터 삭제
    • 앞에 삭제: O(1)
    • 뒤, 중간에 삭제: O(n)
  • 인덱스 조회: O(n)
  • 데이터 검색: O(n)

📝오늘의 회고

오늘은 20분 늦게 일어나서 지각을 해버렸다. 그 전날 일찍 자고 일찍 일어나는 습관을 들이자..! 이제 다시 새로운 과제가 시작되었다. 다음주 월요일까지 다시 열심히 달려야겠다. 스프링 들어가기 전에 미리 스프링 입문 강의를 듣고 싶었는데 들을 수 있을지 모르겠다. 일단 최선을 다해보자.

📌내일의 할 일

  • 자바 중급2편 섹션4 ~ 섹션5 정리
  • 키오스크 과제 시작

0개의 댓글

Powered by GraphCDN, the GraphQL CDN