Commit c5bd6e66 authored by Trisha Gee's avatar Trisha Gee
Browse files

[Ch10c] Improving Pool puzzle

parent bedf23e7
Loading
Loading
Loading
Loading
+17 −5
Changes for src/main/java/ch10c/StreamPuzzle.java: 17 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -7,20 +7,32 @@ import java.util.stream.Collectors;

public class StreamPuzzle {
  public static void main(String[] args) {
    List<Song> songs = new JukeboxData.Songs().getSongs();
    SongSearch songSearch = new SongSearch();

    songSearch.printTopFiveSongs();

    songSearch.searchForArtist("The Beatles");
    songSearch.searchForArtist("The Beach Boys");
  }
}

class SongSearch {
  private final List<Song> songs;

  public SongSearch() {
    songs = new JukeboxData.Songs().getSongs();
  }

  void printTopFiveSongs() {
    List<String> topFive = songs.stream()
                                .sorted(Comparator.comparingInt(Song::getTimesPlayed))
                                .map(song -> song.getTitle())
                                .limit(5)
                                .collect(Collectors.toList());
    System.out.println("Top 5 songs: " + topFive);

    searchForArtist(songs, "The Beatles");
    searchForArtist(songs, "The Beach Boys");
  }

  private static void searchForArtist(List<Song> songs, String artist) {
  void searchForArtist(String artist) {
    Optional<Song> result = songs.stream()
                                 .filter(song -> song.getArtist().equals(artist))
                                 .findFirst();