[HW 4] stream 활용

김지현·2023년 10월 27일
0

JAVA

목록 보기
9/14

문제

책을 분류하여 조회하는 다양한 메서드 작성

1. 카테고리가 여행인 책 제목 조회

filter로 카테고리가 '여행'인 책 분류
forEach로 조건에 맞는 책 제목 하나씩 출력

bookList.stream()
.filter(book -> book.getCategory().equals("여행"))
.forEach(f -> System.out.println(f.getBookName()));

2. 가격이 16200원 이하인 책 제목 조회

bookList.stream()
.filter(book -> book.getPrice() <= 16200)
.forEach(f -> System.out.println(f.getBookName()));

3. 제목에 "경제"가 들어간 책 제목 조회

bookList.stream()
.filter(book -> book.getBookName().contains("경제"))
.forEach(f -> System.out.println(f.getBookName()));

4. 가격이 가장 비싼 책 가격 조회

mapToDoubleBook::getPrice 책의 가격을 double 값으로 매핑
max로 최대값 탐색, getAsDouble로 double 타입으로 반환

double maxPrice = bookList.stream()
.mapToDouble(Book::getPrice).max().getAsDouble();
System.out.println("책 목록 중 가장 비싼 금액: " + maxPrice);

5. 카테고리가 IT인 책들의 가격 합 조회

double sum = bookList.stream()
.filter(book -> book.getCategory().equals("IT"))
.mapToDouble(Book::getPrice).sum();
System.out.println("카테고리 IT 책들의 가격 합: " + sum);

6. 카테고리가 IT인 책들을 40프로 할인하여 새 리스트 생성

map을 사용해서 책의 가격을 수정
return된 book 객체들을 toList를 통해 list로 생성

List<Book> discountedBookList = bookList.stream().
                filter(book -> book.getCategory().equals("IT"))
                .map(book -> {
                    book.setPrice(book.getPrice() * 0.6);
                    return book;
                }).toList();

for (Book book : discountedBookList) {
	System.out.println("할인된 책 제목: " + book.getBookName());
	System.out.println("할인된 책 가격: " + book.getPrice() + "\n");
}
profile
Server Developer

0개의 댓글