StreamArrayListProcessing.java
1        /* 
2         a program to perform some basic operations on a list of Strings using Java streams. 
3         */
4    
5    package arraylistplay;
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("Kohei, Clark");
20           names.add("Yehudis, Lim");
21           names.add("Carey, Mariah");
22           List<String> firstNamesList = names.stream()
23                   .map(n -> firstName(n))
24                   .collect(Collectors.toList());
25   
26           System.out.print("First names: ");
27           for (String firstName : firstNamesList){
28               System.out.print(firstName + " ");
29           }
30           System.out.println();
31   
32           String firstNames = names.stream()
33                   .map(n -> firstName(n))
34                   .collect(Collectors.joining(", "));
35   
36           System.out.println("First names: " + firstNames);
37   
38           String lastNames = names.stream()
39                   .map(n -> lastName(n))
40                   .collect(Collectors.joining(", "));
41   
42           System.out.println("Last names: " + lastNames);
43   
44           String upperCaseFirstNames = names.stream()
45                   .map(n -> firstName(n))
46                   .map(n -> n.toUpperCase())
47                   .collect(Collectors.joining(", "));
48   
49           System.out.println("Uppercase first names: " + upperCaseFirstNames);
50   
51           String hyphenatedLastNames = names.stream()
52                   .map(n -> lastName(n))
53                   .filter(n -> n.contains("-"))
54                   .collect(Collectors.joining(", "));
55   
56           System.out.println("Hyphenated last names: " + hyphenatedLastNames);
57   
58           int totalLength = names.stream()
59                   .map(n -> n.length())
60                   .reduce(0, (n1, n2) -> n1 + n2);
61   
62           System.out.println("Total length: " + totalLength);
63   
64           int totalFirstsLength = names.stream()
65                   .map(n -> firstName(n))
66                   .map(n -> n.length())
67                   .reduce(0, (n1, n2) -> n1 + n2);
68   
69           System.out.println("Total firsts length: " + totalFirstsLength);
70   
71           int namesProduct = names.stream()
72                   .map(n -> n.length())
73                   .reduce(1, (n1, n2) -> n1 * n2);
74   
75           System.out.println("Names product: " + namesProduct);
76       }
77   
78       private static String firstName(String directoryStyleName) {
79           int cp = directoryStyleName.indexOf(", ");
80           int last = directoryStyleName.length();
81           String first = directoryStyleName.substring(cp+2,last);
82           return first;
83       }
84   
85       private static String lastName(String directoryStyleName) {
86           int cp = directoryStyleName.indexOf(", ");
87           String last = directoryStyleName.substring(0,cp);
88           return last;
89       }
90   }