문제 정의

여행사에 패키지 여행 상품이 있습니다. 여행 비용은 15세 이상은 100만원, 그 미만은 50만원 입니다.
고객 세 명이 패키지 여행을 떠난다고 했을 때 비용 계산과 고객 명단 검색등에 대한 연산을 스트림을 활용하여 구현해 봅니다.
고객에 대한 클래스를 만들고 ArrayList로 고객을 관리 합니다.

고객 정보는 다음과 같습니다.

CustomerLee
이름 : 이순신
나이 : 40
비용 : 100

CustomerKim
이름 : 김유신
나이 : 20
비용 : 100

CustomerHong
이름 : 홍길동
나이 :13
비용 : 50

1. 고객 명단 출력

  • 그냥 리스트를 출력하면 toString으로 나온다
  • 이름만 출력하고 싶으면 스트림에서 map으로 getName하고 forEach로 하나씩 출력한다
System.out.println("고객 명단 출력");
customerList.stream().map(c->c.getName()).forEach(s-> System.out.println(s));
//map에 getName으로 이름만 가져온 스트림 만들고(중간연산) 그 스트림을 forEach로 받는다(최종연산)

2. 총 여행 비용 출력

  • 리스트의 여행 비용을 getPrice로 가져오고 sum()해서 총 비용을 반환한다
System.out.println("여행비용");
System.out.println(customerList.stream().mapToInt(c ->c.getPrice()).sum());

3. 20세 이상 고객의 이름을 정렬해서 출력

  • filter로 20세 이상만 스트림에 저장하고, map으로 getName해서 저장하고, sorted하고 forEach 해서 출력
System.out.println("20세 이상 고객 이름 정렬");
customerList.stream().filter(c->c.getAge() >= 20).map(c->c.getName()).sorted().forEach(s-> System.out.println(s));
profile
안녕하세요. Chat JooPT입니다.

0개의 댓글