package com.insightfullogic.java8.examples.chapter7;
import com.insightfullogic.java8.examples.chapter1.Album;
import com.insightfullogic.java8.examples.chapter1.Artist;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Logger;
import java.util.stream.Collectors;
public class Testing {
private static final Logger logger = Logger.getLogger("Testing");
// BEGIN to_uppercase
public static List<String> allToUpperCase(List<String> words) {
return words.stream()
.map(string -> string.toUpperCase())
.collect(Collectors.<String>toList());
}
// END to_uppercase
// BEGIN firstToUpperCase_lambda
public static List<String> elementFirstToUpperCaseLambdas(List<String> words) {
return words.stream()
.map(value -> { // <1>
char firstChar = Character.toUpperCase(value.charAt(0));
return firstChar + value.substring(1);
})
.collect(Collectors.<String>toList());
}
// END firstToUpperCase_lambda
// BEGIN firstToUpperCase_reference
public static List<String> elementFirstToUppercase(List<String> words) {
return words.stream()
.map(Testing::firstToUppercase)
.collect(Collectors.<String>toList());
}
public static String firstToUppercase(String value) { // <1>
char firstChar = Character.toUpperCase(value.charAt(0));
return firstChar + value.substring(1);
}
// END firstToUpperCase_reference
public static Set<String> imperativeNationalityReport(Album album) {
// BEGIN imperative_nationality_report
Set<String> nationalities = new HashSet<>();
for (Artist artist : album.getMusicianList()) {
if (artist.getName().startsWith("The")) {
String nationality = artist.getNationality();
System.out.println("Found nationality: " + nationality);
nationalities.add(nationality);
}
}
return nationalities;
// END imperative_nationality_report
}
public static Set<String> forEachLoggingFailure(Album album) {
// BEGIN foreach_logging_nationality_report
album.getMusicians()
.filter(artist -> artist.getName().startsWith("The"))
.map(artist -> artist.getNationality())
.forEach(nationality -> System.out.println("Found: " + nationality));
Set<String> nationalities
= album.getMusicians()
.filter(artist -> artist.getName().startsWith("The"))
.map(artist -> artist.getNationality())
.collect(Collectors.<String>toSet());
// END foreach_logging_nationality_report
return nationalities;
}
public static Set<String> nationalityReportUsingPeek(Album album) {
// BEGIN peek_nationality_report
Set<String> nationalities
= album.getMusicians()
.filter(artist -> artist.getName().startsWith("The"))
.map(artist -> artist.getNationality())
.peek(nation -> System.out.println("Found nationality: " + nation))
.collect(Collectors.<String>toSet());
// END peek_nationality_report
return nationalities;
}
}