StreamArrayListProcessing.java
1    /* 
2     * a program to perform some basic operations on a list of Strings using Java streams. 
3     */
4    
5    package arraylists;
6    
7    import java.util.ArrayList;
8    import java.util.List;
9    import java.util.stream.Collectors;
10   
11   public class StreamArrayListProcessing {
12       public static void main(String[] args) {
13           List<String> names = new ArrayList<>();
14           names.add("Holiday, Billie");
15           names.add("Claudel, Camille");
16           names.add("Picasso, Pablo");
17           names.add("Gallen-Kallela, Akseli");
18           names.add("Zotto, Osvaldo");
19           names.add("Ibanez, Diego");
20           names.add("Bonilla, Walter");
21           names.add("Gayguy, Christopher");
22   
23           List<String> firstNamesList = names.stream()
24                   .map(n -> firstName(n))
25                   .collect(Collectors.toList());
26   
27           System.out.print("First names: ");
28           for (String firstName : firstNamesList) {
29               System.out.print(firstName + " ");
30           }
31           System.out.println();
32   
33           String firstNames = names.stream()
34                   .map(n -> firstName(n))
35                   .collect(Collectors.joining(", "));
36   
37           System.out.println("First names: " + firstNames);
38   
39           String lastNames = names.stream()
40                   .map(n -> lastName(n))
41                   .collect(Collectors.joining(", "));
42   
43           System.out.println("Last names: " + lastNames);
44   
45           String upperCaseFirstNames = names.stream()
46                   .map(n -> firstName(n))
47                   .map(n -> n.toUpperCase())
48                   .collect(Collectors.joining(", "));
49   
50           System.out.println("Uppercase first names: " + upperCaseFirstNames);
51   
52           String hyphenatedLastNames = names.stream()
53                   .map(n -> lastName(n))
54                   .filter(n -> n.contains("-"))
55                   .collect(Collectors.joining(", "));
56   
57           System.out.println("Hyphenated last names: " + hyphenatedLastNames);
58   
59           int totalLength = names.stream()
60                   .map(n -> n.length())
61                   .reduce(0, (n1, n2) -> n1 + n2);
62   
63           System.out.println("Total length: " + totalLength);
64   
65           int totalFirstsLength = names.stream()
66                   .map(n -> firstName(n))
67                   .map(n -> n.length())
68                   .reduce(0, (n1, n2) -> n1 + n2);
69   
70           System.out.println("Total firsts length: " + totalFirstsLength);
71   
72           int namesProduct = names.stream()
73                   .map(n -> n.length())
74                   .reduce(1, (n1, n2) -> n1 * n2);
75   
76           System.out.println("Names product: " + namesProduct);
77       }
78   
79       private static String firstName(String directoryStyleName) {
80           int cp = directoryStyleName.indexOf(", ");
81           int last = directoryStyleName.length();
82           String first = directoryStyleName.substring(cp + 2, last);
83           return first;
84       }
85   
86       private static String lastName(String directoryStyleName) {
87           int cp = directoryStyleName.indexOf(", ");
88           String last = directoryStyleName.substring(0, cp);
89           return last;
90       }
91   }
92   
93   
94