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("McCall, Scott");
20 names.add("Sawayama, Rina");
21 names.add("Knowles-Carter, Beyonce");
22
23 List<String> firstNamesList = names.stream()
24 .map(n -> firstName(n))
25 .collect(Collectors.toList());
26
27 System.out.print("First names: ");
28 for (String firstName : firstNamesList){
29 System.out.print(firstName + " ");
30 }
31 System.out.println();
32
33 String firstNames = names.stream()
34 .map(n -> firstName(n))
35 .collect(Collectors.joining(", "));
36
37 System.out.println("First names: " + firstNames);
38
39 String lastNames = names.stream()
40 .map(n -> lastName(n))
41 .collect(Collectors.joining(", "));
42
43 System.out.println("Last names: " + lastNames);
44
45 String upperCaseFirstNames = names.stream()
46 .map(n -> firstName(n))
47 .map(n -> n.toUpperCase())
48 .collect(Collectors.joining(", "));
49
50 System.out.println("Uppercase first names: " + upperCaseFirstNames);
51
52 String hyphenatedLastNames = names.stream()
53 .map(n -> lastName(n))
54 .filter(n -> n.contains("-"))
55 .collect(Collectors.joining(", "));
56
57 System.out.println("Hyphenated last names: " + hyphenatedLastNames);
58
59 int totalLength = names.stream()
60 .map(n -> n.length())
61 .reduce(0, (n1, n2) -> n1 + n2);
62
63 System.out.println("Total length: " + totalLength);
64
65 int totalFirstsLength = names.stream()
66 .map(n -> firstName(n))
67 .map(n -> n.length())
68 .reduce(0, (n1, n2) -> n1 + n2);
69
70 System.out.println("Total firsts length: " + totalFirstsLength);
71
72 int namesProduct = names.stream()
73 .map(n -> n.length())
74 .reduce(1, (n1, n2) -> n1 * n2);
75
76 System.out.println("Names product: " + namesProduct);
77 }
78
79 private static String firstName(String directoryStyleName) {
80 int cp = directoryStyleName.indexOf(", ");
81 int last = directoryStyleName.length();
82 String first = directoryStyleName.substring(cp+2,last);
83 return first;
84 }
85
86 private static String lastName(String directoryStyleName) {
87 int cp = directoryStyleName.indexOf(", ");
88 String last = directoryStyleName.substring(0,cp);
89 return last;
90 }
91 }
92