/////
Search
Duplicate
6️⃣

실전 연습

이 절에서는 지금까지 배운 스트림을 실제 사용한다.
이번에는 거래를 실행하는 거래자 예제를 살펴본다. 우리의 간리자가 여덟 가지 질문의 답을 찾으라고 요청했다고 생각해보자.
스스로 해결해보라.
1.
2011년에 일어난 모든 트랜잭션을 찾아 값을 오름차순으로 정렬하시오
2.
거래자가 근무하는 모든 도시를 중복 없이 나열하시오
3.
케임브리지에서 근무하는 모든 거래자를 찾아서 이름순으로 정렬하시오
4.
모든 거래자의 이름을 알파벳순으로 정렬해서 반환하시오
5.
밀라노에 거래자가 있는가?
6.
케임브리지에 거주하는 거래자의 모든 트랜잭션값을 출력하시오
7.
전체 트랜잭션 중 최댓값은 얼마인가?
8.
전체 트랜잭션 중 최솟값은 얼마인가?

1. 거래자와 트랜잭션

: 실전 연습에서는 다음과 같은 거래자 리스트와 트랜잭션 리스트를 이용한다.
Trader raoul = new Trader("Raoul", "Cambridge"); Trader mario = new Trader("Mario", "Milan"); Trader alan = new Trader("Alan", "Cambridge"); Trader brian = new Trader("Brian", "Cambridge");
Java
복사
List<Transaction> transactions = Arrays.asList( new Transaction(brian, 2011, 300), new Transaction(raoul, 2012, 1000), new Transaction(raoul, 2011, 400), new Transaction(mario, 2012, 710), new Transaction(mario, 2012, 700), new Transaction(alan, 2012, 950) );
Java
복사

2. 실전 연습

// 1 System.out.println(transactions.stream() .filter(transaction -> transaction.getYear() == 2011) .sorted(Comparator.comparing(Transaction::getValue)) .collect(Collectors.toList())); // 2 System.out.println(transactions.stream() .map(Transaction::getTrader) .map(Trader::getCity) .distinct() .collect(Collectors.toList())); //3 System.out.println(transactions.stream() .map(Transaction::getTrader) .filter(trader -> trader.getCity().equals("Cambridge")) .map(Trader::getName) .distinct() .sorted(String::compareTo) .collect(Collectors.toList())); //4 System.out.println(transactions.stream() .map(transaction -> transaction.getTrader().getName()) .distinct() .sorted(String::compareTo) .collect(Collectors.toList())); //5 System.out.println(transactions.stream() .map(Transaction::getTrader) .anyMatch(trader -> trader.getCity().equals("Milan"))); //6 System.out.println(transactions.stream() .filter(trader -> trader.getTrader().getCity().equals("Cambridge")) .map(Transaction::getValue) .collect(Collectors.toList())); //7 System.out.println(transactions.stream() .map(transaction -> transaction.getValue()) .reduce(Integer::max) .get()); //8 System.out.println(transactions.stream() .map(Transaction::getValue) .reduce(Integer::min) .get());
Java
복사