StreamArrayListsProcessing.java
|
/*
A program to perform some basic operations on a list of strings
using Java streams
*/
package arraylists;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class StreamArrayListsProcessing {
public static void main(String[] args){
//point A: Add some strings which represent names to an ArrayList
List<String> names = new ArrayList<>();
names.add("Holiday, Billie");
names.add("Claudel, Camille");
names.add("Picasso, Pablo");
names.add("Gallen-Kallella, Akseli");
names.add("Zotto, Osvaldo");
names.add("VanRiper, Daniel");
names.add("Dendo, Tony");
names.add("bo-bo, guy");
//point B
List<String> firstNamesList = names.stream()
.map(n -> firstName(n))
.collect(Collectors.toList());
System.out.println("First names: ");
for (String firstName : firstNamesList) {
System.out.print(firstName + " ");
}
System.out.println();
//point C
String firstNames = names.stream()
.map(entireName -> firstName(entireName))
.collect(Collectors.joining(", "));
System.out.println("First names: " + firstNames);
//point D
String lastNames = names.stream()
.map(entireName -> lastName(entireName))
.collect(Collectors.joining(", "));
System.out.println("Last names: " + lastNames);
//point E
String upperCaseFirstNames = names.stream()
.map(entireName -> firstName(entireName))
.map(entireName -> entireName.toUpperCase())
.collect(Collectors.joining(", "));
System.out.println("Upper Case First Names: " + upperCaseFirstNames);
//point F
String hyphenatedLastNames = names.stream()
.map(Name -> lastName(Name))
.filter(Name -> Name.contains("-"))
.collect(Collectors.joining(", "));
System.out.println("Hyphenated last names : " + hyphenatedLastNames );
//point G
int totalLength = names.stream()
.map(name -> name.length())
.reduce(0, (name1, name2) -> name1 + name2);
System.out.println("Total length: " + totalLength);
//point H
int totalLengthFirstNames = names.stream()
.map(name -> firstName(name))
.map(name -> name.length())
.reduce(0, (name, nextName) -> name + nextName);
System.out.println("Total length of first Names: " + totalLengthFirstNames);
//point I
int ProductLength = names.stream()
.map(name -> name.length())
.reduce(1, (name1, name2) -> name1 * name2);
System.out.println("The product of all the lengths: " + ProductLength);
}
private static String firstName(String directoryStyleName) {
int spaceLocation = directoryStyleName.indexOf(" ");
String firstName = directoryStyleName.substring(spaceLocation);
return firstName;
}
private static String lastName(String directoryStyleName) {
int seperatorLocation = directoryStyleName.indexOf(",");
String lastName = directoryStyleName.substring(0, seperatorLocation );
return lastName;
}
}