Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

지석이의 일기

Java Stream연습 1 본문

Java

Java Stream연습 1

91년도에 철산에서 태어난 최지석 2023. 11. 1. 12:27

for 만 사용하다가 정렬건때문에 더이상 방관하기 힘들어졌다.

stream에 익숙해 지기 위해 예제를 설정하고 문제를 풀어보자.

 

문제는 아래와 같다.

  1. Product 객체를 여러 개 포함하는 List를 생성하세요. (최소 5개 이상의 Product 객체를 포함하도록 합니다.)
  2. Stream을 이용하여 가격이 5000원 이상인 제품들만 골라서 리스트로 만드세요.
  3. Stream을 이용하여 제품들의 이름만 추출하여 리스트로 만드세요.
  4. Stream을 이용하여 제품들의 평균 가격을 계산하세요.
  5. 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이 완전하게 익숙해질때까지 문제를 풀어볼 예정이다.