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           names.add("Holiday, Billie");
11           names.add("Claudel, Camille");
12           names.add("Picasso, Pablo");
13           names.add("Gallen-Kallela, Akseli");
14           names.add("Zotto, Osvaldo");
15           names.add("Ibanez, Diego");
16           names.add("Bonilla, Walter");
17           names.add("Walkins, Christoph");
18           List<String> firstNamesList = names.stream()
19                   .map(n -> firstName(n))
20                   .collect(Collectors.toList());
21           System.out.print("First names: ");
22           for (String firstName : firstNamesList) {
23               System.out.print(firstName + " ");
24           }
25           System.out.println();
26           String firstNames = names.stream()
27                   .map(n -> firstName(n))
28                   .collect(Collectors.joining(", "));
29           System.out.println("First names: " + firstNames);
30           String lastNames = names.stream()
31                   .map(n -> lastName(n))
32                   .collect(Collectors.joining(", "));
33           System.out.println("Last names: " + lastNames);
34           String upperCaseFirstNames = names.stream()
35                   .map(n -> firstName(n))
36                   .map(n -> n.toUpperCase())
37                   .collect(Collectors.joining(", "));
38           System.out.println("Uppercase first names: " + upperCaseFirstNames);
39           String hyphenatedLastNames = names.stream()
40                   .map(n -> lastName(n))
41                   .filter(n -> n.contains("-"))
42                   .collect(Collectors.joining(", "));
43           System.out.println("Hyphenated last names: " + hyphenatedLastNames);
44           int totalLength = names.stream()
45                   .map(n -> n.length())
46                   .reduce(0, (n1, n2) -> n1 + n2);
47           System.out.println("Total length: " + totalLength);
48           int totalFirstsLength = names.stream()
49                   .map(n -> firstName(n))
50                   .map(n -> n.length())
51                   .reduce(0, (n1, n2) -> n1 + n2);
52           System.out.println("Total firsts length: " + totalFirstsLength);
53           int namesProduct = names.stream()
54                   .map(n -> n.length())
55                   .reduce(1, (n1, n2) -> n1 * n2);
56           System.out.println("Names product: " + namesProduct);
57       }
58       private static String firstName(String directoryStyleName) {
59           int cp = directoryStyleName.indexOf(", ");
60           int last = directoryStyleName.length();
61           String first = directoryStyleName.substring(cp + 2, last);
62           return first;
63       }
64       private static String lastName(String directoryStyleName) {
65           int cp = directoryStyleName.indexOf(", ");
66           String last = directoryStyleName.substring(0, cp);
67           return last;
68       }
69   }