StreamArrayListsProcessing.java
1    package arraylistplay;
2    
3    import java.util.*;
4    import java.util.stream.Collectors;
5    
6    
7    public class StreamArrayListsProcessing {
8        public static void main (String[] args){
9            List<String> names = new ArrayList<>();
10           names.add("Holiday, Billie");
11           names.add("Claudel, Camille");
12           names.add("Picasso, Pablo");
13           names.add("Gallen-Kallela, Askeli");
14           names.add("Zotto, Osvaldo");
15           names.add("Weber, Ellen");
16   
17           //point B
18           List<String> firstNamesList = names.stream()
19                   .map(n -> firstName(n))
20                   .collect(Collectors.toList());
21   
22           System.out.println("First Names: ");
23           for(String firstName : firstNamesList){
24               System.out.println(firstName + " ");
25           }
26           System.out.println();
27   
28           //point C
29           String firstNames = names.stream()
30                   .map(n -> firstName(n))
31                   .collect(Collectors.joining(", "));
32           System.out.println("First names: " + firstNames);
33   
34           //point D
35           String LastNames = names.stream()
36                   .map(n -> LastName(n))
37                   .collect(Collectors.joining(", "));
38           System.out.println("Last names: " + LastNames);
39   
40           //Point E
41           String upperCaseFirstNames = names.stream()
42                   .map(n -> firstName(n))
43                   .map(n -> n.toUpperCase())
44                   .collect(Collectors.joining(", "));
45           System.out.println("Upper Case names: " + upperCaseFirstNames);
46   
47           //Point F
48           String hyphenatedLastNames = names.stream()
49                   .map(n -> LastName(n))
50                   .filter(n -> n.contains("-"))
51                   .collect(Collectors.joining(", "));
52           System.out.println("Hyphenated names: " + hyphenatedLastNames);
53   
54           //Point G
55           int totalLength = names.stream()
56                   .map(n -> n.length())
57                   .reduce(0, (n1, n2) -> n1 + n2);
58           System.out.println("Total Length: " + totalLength);
59   
60           //Point H
61           int firstLength = names.stream()
62                   .map(n -> firstName(n))
63                   .map(n -> n.length())
64                   .reduce(0, (n1, n2) -> n1 + n2);
65           System.out.println("Total Length: " + firstLength);
66   
67           //Point I
68           int totalProduct = names.stream()
69                   .map(n -> n.length())
70                   .reduce(1, (n1, n2) -> n1 * n2);
71           System.out.println("Total Product: " + totalProduct);
72   
73       }
74   
75       private static String firstName(String directoryStyleName) {
76           int first = directoryStyleName.indexOf(",");
77           String f  = directoryStyleName.substring(first + 2);
78           return f;
79       }
80   
81       private static String LastName(String directoryStyleName) {
82           int last = directoryStyleName.indexOf(",");
83           String l  = directoryStyleName.substring(0, last);
84           return l;
85       }
86   
87   }
88