StreamArrayListProcessing.java
1    package arraylistplay;
2    
3    import java.util.ArrayList;
4    import java.util.List;
5    import java.util.stream.Collectors;
6    
7    public class StreamArrayListProcessing {
8        public static void main(String[] args) {
9            List<String> names = new ArrayList<>();
10           // Part A
11           names.add("Holiday, Billie");
12           names.add("Claudel, Camille");
13           names.add("Picaso, Pablo");
14           names.add("Gallen-Kallela, Akseli");
15           names.add("Zotto, Osvaldo");
16           names.add("Ross, Bob");
17           names.add("Rogan, Joe");
18           // Part B
19           List<String> firstNamesList = names.stream()
20                   .map(n -> firstName(n))
21                   .collect(Collectors.toList());
22           System.out.print("First names: ");
23           for (String firstName : firstNamesList){
24               System.out.print(firstName + " ");
25           }
26           System.out.println();
27           // Part C
28           String firstNames = names.stream()
29                   .map(n -> firstName(n))
30                   .collect(Collectors.joining(", "));
31           System.out.println("First names: " + firstNames);
32           // Part D
33           String lastNames = names.stream()
34                   .map(n -> lastName(n))
35                   .collect(Collectors.joining(", "));
36           System.out.println("Last names: " + lastNames);
37           // Part E
38           String upperCaseFirstNames = names.stream()
39                   .map(n -> firstName(n))
40                   .map(n -> n.toUpperCase())
41                   .collect(Collectors.joining(", "));
42           System.out.println("Uppercase first names: " + upperCaseFirstNames);
43           // Part F
44           String hyphenatedLastNames = names.stream()
45                   .map(n -> lastName(n))
46                   .filter(n -> n.contains("-"))
47                   .collect(Collectors.joining(", "));
48           System.out.println("Hypenated Last Names " + hyphenatedLastNames);
49           // Part G
50           int totalLength = names.stream()
51                   .map(n -> n.length())
52                   .reduce(0, (n1, n2) -> n1 + n2);
53           System.out.println("Total length: " + totalLength);
54           // Part H
55           int FirstLength = names.stream()
56                   .map(n -> firstName(n))
57                   .map(n -> n.length())
58                   .reduce(0,(n1,n2) -> n1 + n2);
59           System.out.println("First Names length: " + FirstLength);
60           // Part I
61           int ProductLength = names.stream()
62                   .map(n -> n.length())
63                   .reduce(1,(n1,n2) -> n1 * n2);
64           System.out.println("Product of Names: " + ProductLength);
65   
66       }
67       private static String firstName (String directoryStyleName) {
68           int directoryStyleNameComma = directoryStyleName.indexOf(",");
69           int directorylength = directoryStyleName.length();
70           directoryStyleName = directoryStyleName.substring(directoryStyleNameComma + 1, directorylength);
71           return directoryStyleName;
72       }
73       private static String lastName (String directoryStyleName2){
74           int directoryStyleNameComma = directoryStyleName2.indexOf(",");
75           directoryStyleName2 = directoryStyleName2.substring(0, directoryStyleNameComma);
76           return (directoryStyleName2);
77       }
78   }
79   
80