Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- zsh theme
- 맥
- mysql 표
- spring boot
- zsh
- VI
- 욕심쟁이 방법
- mycli
- MySQL
- 데이크스트라
- 인프런
- 순차탐색
- 동적 프로그래밍 방법
- mysql 표 출력
- 오블완
- 인프런워밍업클럽
- 오일러 경로
- 이진탐색
- 스터디2기
- 알고리즘
- 네트워킹데이
- 티스토리챌린지
- CS스터디
- Less
- table status
- 터미널
- 분할정복 방법
- cs
- Pager
- oh-my-zsh
Archives
- Today
- Total
Develop
9일차_Lambda, Record, Stream, Optional, Reduce 등 본문
안녕하세용 !
3/14(금) 9일차 입니다.
주말에 2주치 이론을 복습하다보니 지금쓰게 되었네요ㅎㅎ;;
금요일에는 Lambda, Comparator, Date, Record, Stream, Optional, Reduce 등 을 배웠습니다.
이날 진짜 폭풍진도 ㄷㄷ Stream 부터 Optional, Reduce 는 어렵게 느껴졌습니다.

공부내용
Lambda
말로만 듣던 람다식! 드디어 배웠습니다~
실제로 써보니 람다식으로 축약되면 저는 코드이해가 더어렵더라고요. (아직 초보라서 그런가;;)
- Lambda 는 익명 클래스를 더 간결하게 표현하기위한 문법
- new 키워드를 사용한 객체 생성방식이 아니라 화살표 ( -> ) 를 이용한 함수형 표현식을 이용
- 오직 하나의 메서드만 존재하는 함수형 인터페이스 (@Functional Interface) 에서만 사용 가능
익명 클래스 (Anonymous Class)
: 기존의 클래스를 굳이 정의하지 않고, 일회성으로 특정 기능을 구현하고 싶을 때 사용
자주 사용되지 않는 간단한 구현을 위해 별도의 클래스를 만들 필요가 없을 때 유용
콜백 함수, 이벤트 리스너, 스레드 실행, 정렬 기준 제공등에서 많이 활용됨
Comparator
- @FunctionalInterface
- Java에서 정렬기준을 정의할 때 사용되는 인터페이스
- Comparable과 다르게
- 외부에서 두 개의 객체를 비교하여 정렬
- 동일한 객체라도 여러개의 정렬 기준을 적용할 수 있음
- 기존 클래스의 수정 없이 정렬기준 추가 가능
- 메서드 : compare(T o1, T o2)
- 기본 정렬(내추럴 오더링)이 아닌, 커스텀 정렬 기준이 필요할 때 사용
- ex) 학교 레벨이 아니라 학교명 기준으로 정렬
Record
- 불변 객체를 간단히 생성하는 기능
- Java 14부터 도입된 문법으로, equals(), hashCode(), toString()을 자동으로 오버라이딩(클래스 여러개 생성하는것보다 빠름)
- 기존 Lombok @Data, @Value와 비슷하지만, 컴파일 타임에 자동 생성되므로 성능 이점이 있음
Stream
- Java에서 데이터를 함수형 프로그래밍 방식으로 처리하는 방법
- 데이터 필터링, 매핑, 집계 가능
- 컬렉션, 배열, 파일 등을 동일한 방식으로 처리할 수 있도록 추상화한 기능
- 데이터 소스를 직접 다루지 않고, 연산을 정의하는 방식으로 처리
- 중간연산과 최종연산 개념이 있으며, 최종연산이 수행되기 전까지 중간연산이 실행되지 않음
- 스트림 생성 : 컬렉션이나 배열에서 스트림 생성
- 중간 연산 : filter, map, sorted 등으로 데이터 처리
- 최종 연산 : collect, forEach (스트림의 모든요소에 람다식을 적용하는 메서드)등으로 결과를 얻음
- 스트림은 Iterator 처럼 일회용이며, 한번 사용하면 다시 사용할 수 없음
Optional
- Java 8에서 도입된 클래스로, null 이 될수 있는 값을 안전하게 처리하도록 감싸는 Wrapper 클래스
- 기존의 null 체크를 if문으로 처리하는 대신, Optional을 이용해 더 안전한 코드 작성 가능
- Optional 은 값이 있을수도, 없을수도 있는 상황을 다룰 때 유용
Reduce
- Stream 에서 누적 연산을 수행할 때 사용되는 최종 연산
- parallelStream()은 멀티스레드를 사용하여 병렬 연산을 수행하지만, 모든 경우에서 효율적인 것은 아님
- reduce()를 사용하여 스트림의 모든 요소를 하나의 값으로 축약 가능
그럼 이만..
'백엔드 > KDT_Programmers' 카테고리의 다른 글
| 11일차_IO class, Gemini API KEY 발급 및 Postman 테스트, HTTP (0) | 2025.03.19 |
|---|---|
| 10일차_디자인패턴, 디미터법칙, IO, FileIO (0) | 2025.03.18 |
| 8일차_Set, Map, Stack, Queue 등 (0) | 2025.03.14 |
| 7일차_Collection, ArrayList, LinkedList, Iterator 등 (0) | 2025.03.14 |
| 6일차_Wrapper class, String(immutable), Collection, Generic (1) | 2025.03.12 |