package com.insightfullogic.java8.examples.chapter5; import com.insightfullogic.java8.examples.chapter1.Album; import com.insightfullogic.java8.examples.chapter1.Artist; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import java.util.Map; import java.util.regex.Pattern; import java.util.stream.Stream; import static com.insightfullogic.java8.examples.chapter5.CollectorExamples.countWords; import static java.nio.charset.Charset.defaultCharset; import static java.util.stream.Collectors.groupingBy; public class MethodReferences { public Map<Artist, List<Album>> albumsByArtist(Stream<Album> albums) { return albums.collect(groupingBy(Album::getMainMusician)); } private static final Pattern SPACES = Pattern.compile("\\w+"); public static Map<String, Long> countWordsIn(Path path) throws IOException { Stream<String> words = Files.readAllLines(path, defaultCharset()) .stream() .flatMap(SPACES::splitAsStream); return countWords(words); } }