지석이의 일기
Java Stream연습 1 본문
for 만 사용하다가 정렬건때문에 더이상 방관하기 힘들어졌다.
stream에 익숙해 지기 위해 예제를 설정하고 문제를 풀어보자.
문제는 아래와 같다.
- Product 객체를 여러 개 포함하는 List를 생성하세요. (최소 5개 이상의 Product 객체를 포함하도록 합니다.)
- Stream을 이용하여 가격이 5000원 이상인 제품들만 골라서 리스트로 만드세요.
- Stream을 이용하여 제품들의 이름만 추출하여 리스트로 만드세요.
- Stream을 이용하여 제품들의 평균 가격을 계산하세요.
- Stream을 이용하여 가장 비싼 제품을 찾으세요.
클래스 모델은 아래와 같다
public class Product {
private String name;
private int price;
public Product(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
아래는 내가 직접 풀은 문제 풀이 이다.
참고 해도 좋다~
List<Product> products = Arrays.asList(new Product("콜라", 1000), new Product("사이다", 5900), new Product("환타", 9100), new Product("쥬스", 1300), new Product("아이스크림", 1400), new Product("과자", 5000));
// 2. Stream을 이용하여 가격이 5000원 이상인 제품들만 골라서 리스트로 만드세요.
System.out.println("2. 가격이 5000원 이상인 제품들:");
List<Product> expensiveProducts = products.stream().filter(p -> p.getPrice() >= 5000).toList();
expensiveProducts.forEach(p -> System.out.println(p.getName()));
// 3. Stream을 이용하여 제품들의 이름만 추출하여 리스트로 만드세요.
System.out.println("3. 제품들의 이름:");
List<String> productNames = products.stream().map(Product::getName).toList();
productNames.forEach(System.out::println);
// 4. Stream을 이용하여 제품들의 평균 가격을 계산하세요.
System.out.println("4. 제품들의 평균 가격:");
OptionalDouble averagePrice = products.stream().mapToDouble(Product::getPrice).average();
averagePrice.ifPresentOrElse(avg -> System.out.println(avg), () -> System.out.println("평균 가격을 계산할 수 없습니다."));
// 5. Stream을 이용하여 가장 비싼 제품을 찾으세요.
System.out.println("5. 가장 비싼 제품:");
OptionalInt maxPrice = products.stream().mapToInt(Product::getPrice).max();
maxPrice.ifPresentOrElse(max -> System.out.println(max), () -> System.out.println("가장 비싼 제품을 찾을 수 없습니다."));
github uri => https://github.com/choichoi1233/practice1/blob/master/src/main/java/com/example/practice1/StreamTest1.java
Stream이 완전하게 익숙해질때까지 문제를 풀어볼 예정이다.
'Java' 카테고리의 다른 글
H2 DB + QueryDsl 테스트 해보자 (1) | 2023.11.12 |
---|---|
Java Stream연습 2 (0) | 2023.11.08 |
인텔리 제이(Intelli J)를 써보자. + Spring boot web 구동 (0) | 2023.10.15 |
Spring boot JPA 를 사용해보자. (0) | 2023.09.09 |
로그백 Logback과 log4jdbc 로그파일로 적재해보자. (0) | 2023.01.28 |