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

[Ch10c] Trying to make sense of the queries we have, and what would be useful for the book

parent e04c0a13
Loading
Loading
Loading
Loading
+70 −2
Changes for src/test/java/ch10c/JukeboxQueriesTest.java: 70 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ class JukeboxQueriesTest {
    System.out.println(allSongs);
  }

  // Sorting, Collect to List
  @Test
  void shouldOrderByLeastPlayed() {
    List<Song> allSongs = songs.getSongs();
@@ -39,20 +40,29 @@ class JukeboxQueriesTest {
  void shouldQueryForGenre() {
    List<Song> allSongs = songs.getSongs();
    // ORDER MATTERS
    List<String> genres = allSongs.stream().map(song -> song.getGenre())
    // find all genres in played music
    List<String> genres = allSongs.stream()
                                  .map(song -> song.getGenre())
                                  .distinct()
                                  .collect(toList());
    System.out.println("genres = " + genres);

    System.out.println(allSongs.stream().map(song -> song.getGenre())
    // find number of distinct genres
    System.out.println(allSongs.stream()
                               .map(song -> song.getGenre())
                               .distinct()
                               .count());

    // find number songs for each genre
    // GROUPING
    Map<String, Long> genreCount = allSongs.stream().map(song -> song.getGenre())
                                           .collect(groupingBy(Function.identity(), counting()));
    System.out.println("genreCount = " + genreCount);
  }

  // OPTIONAL
  // max terminal
  // Comparator
  @Test
  void shouldFindMostPopularSong() {
    List<Song> allSongs = songs.getSongs();
@@ -82,6 +92,9 @@ class JukeboxQueriesTest {
    System.out.println("result = " + genreCount);
  }

  // STRAIGHTFORWARD
  // filter
  // toList
  @Test
  void shouldFindHowManySongsAreSomeSortOfRock() {
    List<Song> allSongs = songs.getSongs();
@@ -93,6 +106,7 @@ class JukeboxQueriesTest {
    System.out.println(result);
  }

  // GROUPING
  @Test
  void shouldFindNumberOfTimesSongTitleAppears() {
    List<Song> allSongs = songs.getSongs();
@@ -103,4 +117,58 @@ class JukeboxQueriesTest {

    System.out.println("result = " + result);
  }

  // STRAIGHTFORWARD
  // min terminal
  // OPTIONAL
  @Test
  void shouldGetOldestSong() {
    List<Song> allSongs = songs.getSongs();
    Optional<Song> result = allSongs.stream()
                                    .min(Comparator.comparingInt(Song::getYear));

    System.out.println("result = " + result.get());
  }

  // STRAIGHTFORWARD
  // filter (with param)
  // toList
  @Test
  void shouldBeAbleToFindAllVersionsOfASong() {
    List<Song> allSongs = songs.getSongs();

    String songTitle = "Hurt";
    List<Song> result = allSongs.stream()
                                .filter(song -> song.getTitle().equals(songTitle))
                                .collect(toList());

    System.out.println("result = " + result);
  }

  @Test
  void shouldFilterMapCollect() {
    List<Song> allSongs = songs.getSongs();

    String songTitle = "With a Little Help from My Friends";
    List<String> result = allSongs.stream()
                                .filter(song -> song.getTitle().equals(songTitle))
                                .map(Song::getArtist)
                                .collect(toList());

    System.out.println("result = " + result);
  }

  // PRIMITIVE STREAMS
  @Test
  void shouldBeAbleToCalculateCountForAllVersionsOfASong() {
    List<Song> allSongs = songs.getSongs();

    String songTitle = "Hurt";
    int result = allSongs.stream()
                         .filter(song -> song.getTitle().equals(songTitle))
                         .mapToInt(Song::getTimesPlayed)
                         .sum();

    System.out.println("result = " + result);
  }
}
 No newline at end of file