StreamArrayListProcessing.java
1    //a program to perform some basic operations on a list of strings using java streams
2    
3    package arraylists;
4    
5    import java.util.ArrayList;
6    import java.util.BitSet;
7    import java.util.List;
8    import java.util.stream.Collectors;
9    
10   public class StreamArrayListProcessing {
11   
12       public static void main(String[] args){
13           //point A: Add some strings which represent names to an ArrayList
14           List<String> names = new ArrayList<>();
15           names.add("Holliday, Billie");
16           names.add("Claudel, Camille");
17           names.add("Picasso, Pablo");
18           names.add("Gallen-Kallela, Akseli");
19           names.add("Zotto, Osvaldo");
20           names.add("Walker, Jeremy");
21           names.add("Roosevelt, Teddy");
22   
23           //point B:
24           List<String> firstNamesList = names.stream()
25                   .map(n -> firstName(n))
26                   .collect(Collectors.toList());
27   
28           List<String> lastNamesList = names.stream()
29                   .map(n -> lastName(n))
30                   .collect(Collectors.toList());
31   
32           System.out.print("First names: ");
33           for (String firstName : firstNamesList) {
34               System.out.print(firstName + ", ");
35           }
36           System.out.println();
37           //point C:
38           String firstNames = names.stream()
39                   .map(n -> firstName(n))
40                   .collect(Collectors.joining(", "));
41   
42           System.out.println("First names: "+ firstNames);
43           //point D:
44           String lastNames = names.stream()
45                   .map(n -> lastName(n))
46                   .collect(Collectors.joining(", "));
47   
48           System.out.println("Last names: "+ lastNames);
49   
50           //point E:
51           String upperCasefirstNames = names.stream()
52                   .map(n -> firstName(n))
53                   .map(n -> n.toUpperCase())
54                   .collect(Collectors.joining(", "));
55   
56           System.out.println("Upper Case First names: "+ upperCasefirstNames);
57           //point F:
58           String hyphenatedLastNames = names.stream()
59                   .map(n -> lastName(n))
60                   .filter(n -> n.contains("-"))
61                   .collect(Collectors.joining(", "));
62   
63           System.out.println("Hyphenated Last names: "+ hyphenatedLastNames);
64   
65           //point G:
66           int totalLength = names.stream()
67                   .map(n -> n.length())
68                   .reduce (0, (n1,n2) -> n1 + n2);
69   
70           System.out.println("total length: "+ totalLength);
71           //point H:
72           int firstNameLength = firstNamesList.stream()
73                   .map(n -> n.length())
74                   .reduce (0, (n1,n2) -> n1 + n2);
75   
76           System.out.println("total length: "+ firstNameLength);
77           //point I:
78           int lastNameLength = lastNamesList.stream()
79                   .map(n -> n.length())
80                   .reduce (0, (n1,n2) -> n1 + n2);
81   
82           System.out.println("total length: "+ lastNameLength);
83       }
84       private static String firstName(String directoryStyleName){
85           int directoryStyleNameCommaPosition = directoryStyleName.indexOf(",");
86           return directoryStyleName.substring(directoryStyleNameCommaPosition+2);
87       }
88       private static String lastName(String directoryStyleName) {
89           int directoryStyleNameCommaPosition = directoryStyleName.indexOf(",");
90           return directoryStyleName.substring(0, directoryStyleNameCommaPosition);
91       }
92   }
93