1+ package lambdasinaction .chap4 ;
2+
3+ import java .util .*;
4+ import java .util .stream .*;
5+ import static java .util .Comparator .comparing ;
6+ import static java .util .stream .Collectors .toList ;
7+
8+ public class PuttingIntoPractice {
9+ public static void main (String ...args ){
10+ Trader raoul = new Trader ("Raoul" , "Cambridge" );
11+ Trader mario = new Trader ("Mario" ,"Milan" );
12+ Trader alan = new Trader ("Alan" ,"Cambridge" );
13+ Trader brian = new Trader ("Brian" ,"Cambridge" );
14+
15+ List <Transaction > transactions = Arrays .asList (
16+ new Transaction (brian , 2011 , 300 ),
17+ new Transaction (raoul , 2012 , 1000 ),
18+ new Transaction (raoul , 2011 , 400 ),
19+ new Transaction (mario , 2012 , 710 ),
20+ new Transaction (mario , 2012 , 700 ),
21+ new Transaction (alan , 2012 , 950 )
22+ );
23+
24+
25+ // Query 1: Find all transactions from year 2011 and sort them by value (small to high).
26+ List <Transaction > tr2011 = transactions .stream ()
27+ .filter (transaction -> transaction .getYear () == 2011 )
28+ .sorted (comparing (Transaction ::getValue ))
29+ .collect (toList ());
30+ System .out .println (tr2011 );
31+
32+ // Query 2: What are all the unique cities where the traders work?
33+ List <String > cities =
34+ transactions .stream ()
35+ .map (transaction -> transaction .getTrader ().getCity ())
36+ .distinct ()
37+ .collect (toList ());
38+ System .out .println (cities );
39+
40+ // Query 3: Find all traders from Cambridge and sort them by name.
41+
42+ List <Trader > traders =
43+ transactions .stream ()
44+ .map (Transaction ::getTrader )
45+ .filter (trader -> trader .getCity ().equals ("Cambridge" ))
46+ .distinct ()
47+ .sorted (comparing (Trader ::getName ))
48+ .collect (toList ());
49+ System .out .println (traders );
50+
51+
52+ // Query 4: Return a string of all traders’ names sorted alphabetically.
53+
54+ String traderStr =
55+ transactions .stream ()
56+ .map (transaction -> transaction .getTrader ().getName ())
57+ .distinct ()
58+ .sorted ()
59+ .reduce ("" , (n1 , n2 ) -> n1 + n2 );
60+ System .out .println (traderStr );
61+
62+ // Query 5: Are there any trader based in Milan?
63+
64+ boolean milanBased =
65+ transactions .stream ()
66+ .anyMatch (transaction -> transaction .getTrader ()
67+ .getCity ()
68+ .equals ("Milan" )
69+ );
70+ System .out .println (milanBased );
71+
72+
73+ // Query 6: Update all transactions so that the traders from Milan are set to Cambridge.
74+ transactions .stream ()
75+ .map (Transaction ::getTrader )
76+ .filter (trader -> trader .getCity ().equals ("Milan" ))
77+ .forEach (trader -> trader .setCity ("Cambridge" ));
78+ System .out .println (transactions );
79+
80+
81+ // Query 7: What's the highest value in all the transactions?
82+ int highestValue =
83+ transactions .stream ()
84+ .map (Transaction ::getValue )
85+ .reduce (0 , Integer ::max );
86+ System .out .println (highestValue );
87+ }
88+ }
0 commit comments