[본캠프] 10일차

윤영범·2026년 3월 23일

오늘도 계산기 3단계를 구현하는거에 집중했다

Enum 클래스

  • Enum 요소에 symbol 이라는 String 데이터로 매핑
  • Enum 자체가 하나하나 객체화된 인스턴트 상수 ( 기존에 new로 인스턴트화 시킬필요X )
  • 추상메소드를 정의해서 각 +,-,*,/ 상수마다 apply메소드가 다른역활을 하도록 만들수있다

enum 자체메소드 출저 : https://limkydev.tistory.com/66

내 코드내에서 적용시킨모습
values 메소드로 열거된 enum 객체들을 리턴받고, getter 메소드로 객체안에 저장된
연산자 기호들을 꺼내와, 입력받은 연산자와 같은지 확인하고 리턴값을 반환시키는 내용

문제점
리턴값을 제대로 반환하지못해서 디버그해보니
java: missing return statement 에러가 계속해서 나고있었다
확인해보니 symbol 값이 +,-,*,/ 가 아닐때 return 없는경우의 대한 처리를 안해줘서 에러가 계속해서 나는거였다

해결방안
return을 못하는경우에는 반드시 예외처리를 해줘야한다

람다와 스트림

  • 람다와 스트림은 컬렉션 데이터를 함수형스타일로 더욱더 효율적이고 가독성좋게 처리하는 기술
  • 람다식을 이용해서 불필요한 코드를 줄이기
  • 어떻게가 아닌 무엇을할지 기술한다

스트림 API의 핵심 메서드들

1. 생성(Source) 단계

스트림을 만드는 함수

  • stream() - 컬렉션에서 스트림 생성
  • parallelStream() - 병렬 스트림 생성
  • Stream.of() - 요소들로부터 스트림 생성
  • Stream.generate() - 무한 스트림 생성
  • Stream.iterate() - 반복을 통한 스트림 생성
  • Arrays.stream() - 배열에서 스트림 생성

2.가공(Intermediate Operations) 단계

스트림을 변환하는 중간

  • 필터링: filter(), distinct()
  • 변환: map(), flatMap()
  • 정렬: sorted()
  • 제한: limit(), skip()
  • 디버깅: peek()

3. 결과(Terminal Operations) 단계

최종 결과를 만드는 종료 연산들:

  • 조건 검사: allMatch(), anyMatch(), noneMatch()
  • 요소 찾기: findFirst(), findAny()
  • 결과 수집: collect(), reduce(), toArray()
  • 집계: count(), min(), max(), sum(), average()
  • 반복: forEach(), forEachOrdered()

람다식과 스트림 응용

계산결과들이 들어있는 컬렉션 numlist 를 stream명령어로 생성시킨후
.fiter num-> num>this.result 계산기의 결과값보다 큰 숫자를 찾은후
리스트로 다시 변환시켜서 maxlist에 넣는다

오늘의 느낀점
자바에서 빨간줄과 에러를 어느정도 어떤에러인지 알려줘서
구글링이나 어떻게 썼는지 다른사람들의 예시를 찾아보면서 직접 수정해보니
그래도 아 이게 이렇게해서 돌아가는거구나 하면서 흐름을 어느정도 파악하게되는거같다
다음에 한번씩 더 코드를 사용하게됐을때 조금더 활용해서 쓸수 있을거같다

내일은 오늘 하루종일 해맷던 제네릭을 한번더 찾아보고 적용시켜봐야겠다
제네릭써서 T 변수로 만드는순간 에러가 여기저기 터져버려서 다시 되돌리고 작업하고 수도없이 반복했었다

0개의 댓글