🔥오늘의 학습 키워드🔥
1. 코드 카타
2. 모던 자바 - 람다
3. 모던 자바 - 스트림
🎥 오늘의 회고

1. 코드 카타

2024년 1월 12일 금요일 - 서울에서 김서방 찾기, 나누어 떨어지는 숫자 배열, 음양 더하기
2024년 1월 15일 월요일 - 핸드폰 번호 가리기, 없는 숫자 더하기, 제일 작은 수 제거하기

2. 모던 자바 - 람다

  • 메소드(함수)를 파라미터로 전달하는 경우 메소드의 타입을 선언해야 함 -> 이때 사용하는 것이 함수형 인터페이스
    💡 인터페이스는 타입 역할을 함
    => 함수를 전달할 때 타입을 알려주기 위해서 함수형 인터페이스를 선언하거나 사용해야 함
  • 함수형 인터페이스의 특징
    • 추상메소드를 딱하나만 가지고 있음
  • 람다를 사용한다면 (..., 클래스::클래스 안에 있는 메소드)
    parkingLot.addAll(parkCars(carsWantToPark, Car::hasTicket));
  • 람다 익명함수 -> 메소드(함수)를 한 번만 사용할 때
    (매개변수) -> 로직
    • public int a(int x, int y){ return x + y; }
      🟰
      (x,y) -> x + y

3. 모던 자바 - 스트림

  • 스트림은 자료구조의 "흐름"을 객체로 제공해주고, 그 흐름동안 사용할 수 있는 메소드들을 api로 제공해주는 것
  • 스트림 특징
    • 원본의 데이터를 변경하지 않는다.
    • 일회용이다.
  • 스트림 사용 방법
(예시)
List<Car> benzParkingLot =
								// carsWantToPark의 스트림값을 받아와서
                carsWantToPark.stream()
												// 거기 구현되어 있는 filter()메서드를 사용합니다.
												// filter메서드는 함수를 파라미터로 전달받습니다.
												// 여기서 함수는 제조사가 벤츠면 true를 반환하는 함수네요.
												// 필터 메서드는 이름처럼 false를 반환한 스트림의 원소들을 제거합니다.
                        .filter((Car car) -> car.getCompany().equals("Benz"))
												// 이 결과도 반환을 받아서 다시 리스트로 묶어줍니다.
                        .toList();
  1. 스트림을 받아오기 stream()
  2. 스트림 가공하기 .filter((Car car) -> car.getCompany().equals("Benz"))
    💡filter()와 같은 이미 구현된 메소드도 있음
  3. 스트림 결과 만들기 .toList();
  • 스트림 api
    • forEach()
    • map()
    • filter()

🎥 오늘의 회고

코드 카타를 하면 하루에 3문제씩 푼다고 해도 발전이 되는 것인지 의심이 가긴 한다. 왜냐면 나의 문제를 푸는 방식이 비슷하기 때문이다. 자바 강의는 한 번 회독하긴 했지만 아직 내가 자바를 할 줄 안다고 할 수는 없는 것 같다. 내일부터는 자바 2회독, 코드 카타 복습도 하루 계획에 넣을 예정이다.

profile
안녕하세요

0개의 댓글