package com.insightfullogic.java8.examples.chapter4; import com.insightfullogic.java8.examples.chapter1.Album; import java.util.List; import java.util.function.ToLongFunction; public class OrderDomain extends Order { public OrderDomain(List<Album> albums) { super(albums); } // BEGIN body public long countFeature(ToLongFunction<Album> function) { return albums.stream() .mapToLong(function) .sum(); } public long countTracks() { return countFeature(album -> album.getTracks().count()); } public long countRunningTime() { return countFeature(album -> album.getTracks() .mapToLong(track -> track.getLength()) .sum()); } public long countMusicians() { return countFeature(album -> album.getMusicians().count()); } // END body }