1+ package me .ramswaroop .java8 ;
2+
3+ import java .util .Arrays ;
4+ import java .util .List ;
5+
6+ import static java .util .Comparator .comparing ;
7+ import static java .util .stream .Collectors .toList ;
8+
9+ /**
10+ * @author ramswaroop
11+ * @version 02/02/2017
12+ */
13+ class Trader {
14+
15+ private final String name ;
16+ private final String city ;
17+
18+ public Trader (String n , String c ) {
19+ this .name = n ;
20+ this .city = c ;
21+ }
22+
23+ public String getName () {
24+ return this .name ;
25+ }
26+
27+ public String getCity () {
28+ return this .city ;
29+ }
30+
31+ public String toString () {
32+ return "Trader:" + this .name + " in " + this .city ;
33+ }
34+ }
35+
36+ class Transaction {
37+ private final Trader trader ;
38+ private final int year ;
39+ private final int value ;
40+
41+ public Transaction (Trader trader , int year , int value ) {
42+ this .trader = trader ;
43+ this .year = year ;
44+ this .value = value ;
45+ }
46+
47+ public Trader getTrader () {
48+ return this .trader ;
49+ }
50+
51+ public int getYear () {
52+ return this .year ;
53+ }
54+
55+ public int getValue () {
56+ return this .value ;
57+ }
58+
59+ public String toString () {
60+ return "{" + this .trader + ", " +
61+ "year: " + this .year + ", " +
62+ "value:" + this .value + "}" ;
63+ }
64+ }
65+
66+ public class Streams {
67+
68+ static final Trader raoul = new Trader ("Raoul" , "Cambridge" );
69+ static final Trader mario = new Trader ("Mario" , "Milan" );
70+ static final Trader alan = new Trader ("Alan" , "Cambridge" );
71+ static final Trader brian = new Trader ("Brian" , "Cambridge" );
72+
73+ static final List <Transaction > transactions = Arrays .asList (
74+ new Transaction (brian , 2011 , 300 ),
75+ new Transaction (raoul , 2012 , 1000 ),
76+ new Transaction (raoul , 2011 , 400 ),
77+ new Transaction (mario , 2012 , 710 ),
78+ new Transaction (mario , 2012 , 700 ),
79+ new Transaction (alan , 2012 , 950 )
80+ );
81+
82+ public static List <Transaction > getTransactionsIn2011SortedByValue () {
83+ return transactions .stream ()
84+ .filter (t -> t .getYear () == 2011 )
85+ .sorted (comparing (Transaction ::getValue ))
86+ .collect (toList ());
87+ }
88+
89+ public static List <String > findUniqueCities () {
90+ return transactions .stream ()
91+ .map (t -> t .getTrader ().getCity ())
92+ .distinct ()
93+ .collect (toList ());
94+ }
95+
96+ public static List <Trader > getAllTradersFromCambridgeAndSortByName () {
97+ return transactions .stream ()
98+ .map (Transaction ::getTrader )
99+ .filter (traders -> traders .getCity ().equals ("Cambridge" ))
100+ .distinct ()
101+ .sorted (comparing (Trader ::getName ))
102+ .collect (toList ());
103+ }
104+
105+ public static List <String > getAllTraderNamesAndSortByName () {
106+ return transactions .stream ()
107+ .map (t -> t .getTrader ().getName ())
108+ .distinct ()
109+ .sorted ()
110+ .collect (toList ());
111+ }
112+
113+ public static boolean areAnyTradersFromMilan () {
114+ return transactions .stream ()
115+ .anyMatch (t -> t .getTrader ().getCity ().equals ("Milan" ));
116+ }
117+
118+ public static void main (String [] a ) {
119+ System .out .println (getTransactionsIn2011SortedByValue ());
120+ System .out .println (findUniqueCities ());
121+ System .out .println (getAllTradersFromCambridgeAndSortByName ());
122+ System .out .println (getAllTraderNamesAndSortByName ());
123+ System .out .println (areAnyTradersFromMilan ());
124+ }
125+ }
0 commit comments