1+ package com .brianway .learning .java8 .streamapi ;
2+
3+ import static java .util .Comparator .comparing ;
4+ import static java .util .stream .Collectors .toList ;
5+
6+ import java .util .Arrays ;
7+ import java .util .List ;
8+
9+ public class PuttingIntoPractice {
10+ public static void main (String ... args ) {
11+ Trader raoul = new Trader ("Raoul" , "Cambridge" );
12+ Trader mario = new Trader ("Mario" , "Milan" );
13+ Trader alan = new Trader ("Alan" , "Cambridge" );
14+ Trader brian = new Trader ("Brian" , "Cambridge" );
15+
16+ List <Transaction > transactions = Arrays .asList (
17+ new Transaction (brian , 2011 , 300 ),
18+ new Transaction (raoul , 2012 , 1000 ),
19+ new Transaction (raoul , 2011 , 400 ),
20+ new Transaction (mario , 2012 , 710 ),
21+ new Transaction (mario , 2012 , 700 ),
22+ new Transaction (alan , 2012 , 950 )
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+ // Query 4: Return a string of all traders’ names sorted alphabetically.
52+
53+ String traderStr =
54+ transactions .stream ()
55+ .map (transaction -> transaction .getTrader ().getName ())
56+ .distinct ()
57+ .sorted ()
58+ .reduce ("" , (n1 , n2 ) -> n1 + n2 );
59+ System .out .println (traderStr );
60+
61+ // Query 5: Are there any trader based in Milan?
62+
63+ boolean milanBased =
64+ transactions .stream ()
65+ .anyMatch (transaction -> transaction .getTrader ()
66+ .getCity ()
67+ .equals ("Milan" )
68+ );
69+ System .out .println (milanBased );
70+
71+ // Query 6: Update all transactions so that the traders from Milan are set to Cambridge.
72+ transactions .stream ()
73+ .map (Transaction ::getTrader )
74+ .filter (trader -> trader .getCity ().equals ("Milan" ))
75+ .forEach (trader -> trader .setCity ("Cambridge" ));
76+ System .out .println (transactions );
77+
78+ // Query 7: What's the highest value in all the transactions?
79+ int highestValue =
80+ transactions .stream ()
81+ .map (Transaction ::getValue )
82+ .reduce (0 , Integer ::max );
83+ System .out .println (highestValue );
84+ }
85+ }
0 commit comments