[ 학습 목표 ]
- java.time.LocalDate 를 사용해 현재 날짜와 출판 연도 등을 관리한다.
- 도서 정보에 출판 연도를 String -> LocalDate 로 바꿔 정확한 날짜 비교 및 정렬을 해본다.
- 검색 기능을 개선해서 연도 기준, 키워드 기준 검색이 가능하도록 한다.
[ 이론 ]
1. LocalDate란?
- java.time 패키지에서 제공
- 날짜(연도, 월, 일)를 다룰 수 있는 객체
import java.time.LocalDate;
LocalDate today = LocalDate.now(); // 현재 날짜
LocalDate published = LocalDate.of(2020, 03, 14); // 2020년 3월 14일
[ 실습 ]
1. 개선할 Book 클래스
- day19에서 개선하면 됨
- year: String -> publishedDate: LocalDate로 변경
import java.time.LocalDate;
public class Book {
private String title;
private String author;
private LocalDate publishedDate;
public Book(String title, String author, LocalDate publishedDate) {
this.title = title;
this.author = author;
this.publishedDate = publishedDate;
}
public String getTitle() { return title; }
public String getAuthor() { return author; }
public LocalDate getPublishedDate() { return publishedDate; }
public String toString() {
return "[" + title + " | " + author + " | " + publishedDate + "]";
}
}
2. 조건 검색 기능 구현
1) 연도 기준 검색
public void searchAfterYear(int year) {
for (Book b : books) {
if (b.getPublishedDate().getYear() > year) {
System.out.println(b);
}
}
}
2) 키워드 포함 검색 (제목 또는 저자에 키워드가 포함된 책 찾기)
public void searchByKeyword(String keyword) {
for (Book b : books) {
if (b.getTitle().contains(keyword) || b.getAuthor().contains(keyword)) {
System.out.println(b);
}
}
}
3. 예시 입력 포맷 변경
1) books.txt 저장할 때 날짜를 yyyy-MM-dd 형식으로 저장해야 함:
클린 코드, 로버트 마틴, 2008-08-01
모던 자바 인 액션, 브라이언 고에츠, 2021-04-15
2) 불러올 때는 LocalDate.parse()로 읽어들임:
String[] parts = line.split(", ");
LocalDate date = LocalDate.parse(parts[2]); // 예: 2021-04-15
'공부 기록 > Java with ChatGPT' 카테고리의 다른 글
[Java/ChatGPT] Day 22: Stream API 고급 활용 & Optional (0) | 2025.07.27 |
---|---|
[Java/ChatGPT] Day 21: 파일 기반 데이터 저장 및 로딩 (실제 시스템처럼) (0) | 2025.07.25 |
[Java/ChatGPT] Day 19: 예외 처리와 파일 연동 실전 연습 (0) | 2025.07.16 |
[Java/ChatGPT] Day 18: 파일 입출력 (File I/O) (0) | 2025.07.14 |
[Java/ChatGPT] Day 17: 람다식 (Lambda) & 스트림 (Stream) (0) | 2025.07.09 |