본문 바로가기
언어/JAVA

스트림을 활용하여 패키지 여행 비용 계산하기

by step 1 2021. 5. 22.
반응형

문제

여행사에 패키지 여행 상품이 있습니다. 여행 비용은 15세 이상은 100만원, 그 미만은 50만원 입니다.

고객 세 명이 패키지 여행을 떠난다고 했을 때 비용 계산과 고객 명단 검색등에 대한 연산을 스트림을 활용하여 구현해 봅니다. 고객에 대한 클래스를 만들고 ArrayList로 고객을 관리 합니다

 

 

스트림을 활용한 연산 수행

1. 고객의 명단을 출력

2. 여행의 총 비용을 계산

3. 고객 중 20세 이상인 사람의 이름을 정렬하여 출력

 

TravelCustomer.java

package ch55;

public class TravelCustomer {

	private String name; 	// 이름
	private int age;		// 나이
	private int price;		// 가격
	
	public TravelCustomer(String name, int age, int price) {
		this.name = name;
		this.age = age;
		this.price = price;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	@Override
	public String toString() {
		return "TravelCustomer [name=" + name + ", age=" + age + ", price=" + price + "]";
	}

}

 

TravelCustomerTest.java

package ch55;

import java.util.ArrayList;
import java.util.List;

public class TravelCustomerTest {
	
	public static void main(String[] args) {
		
		TravelCustomer customerLee = new TravelCustomer("이순신", 40, 100);
		TravelCustomer customerKim = new TravelCustomer("김유신", 20, 100);
		TravelCustomer customerHong = new TravelCustomer("홍길동", 13, 50);
		
		List<TravelCustomer> customerList = new ArrayList<TravelCustomer>();
		customerList.add(customerLee);
		customerList.add(customerKim);
		customerList.add(customerHong);
		
		System.out.println("고객 명단 출력");
//		toString 호출
		customerList.stream().forEach(s -> System.out.println(s));
//		이름만 호출
		customerList.stream().map(c -> c.getName()).forEach(s -> System.out.println(s));
		
		System.out.println("여행비용");
		int hap = customerList.stream().mapToInt(c -> c.getPrice()).sum();
		System.out.println(hap);
		
		System.out.println("20세 이상 고객이름 정렬");
//		filter: 조건에 해당하는 데이터만 가져옴
//		map: 선택한 데이터 컬럼을 가져옴
		customerList.stream().filter(c -> c.getAge() >= 20).map(c -> c.getName()).sorted().forEach(s -> System.out.println(s));
	}

}

 

반응형

'언어 > JAVA' 카테고리의 다른 글

예외 처리 방법(처리하기, 미루기)  (0) 2021.05.23
예외 처리 설명  (0) 2021.05.22
reduce() 연산  (0) 2021.05.22
스트림(Stream)  (0) 2021.05.08
람다식  (0) 2021.05.08