feat: add function to count songs by artist
This commit is contained in:
parent
5b1bd3e135
commit
00336f0b55
@ -101,6 +101,18 @@ case class TopSongs(songs: List[Song] = List()) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function counts the number of songs by each artist
|
||||||
|
// It uses flatMap to extract the artist names from the songs
|
||||||
|
// Then it groups the songs by artist name and counts the occurrences
|
||||||
|
// Finally, it returns a map with the artist names as keys and the counts as values
|
||||||
|
def countSongsByArtist(songs: List[Song]): Map[String, Int] = {
|
||||||
|
songs.flatMap(_.singer.map(_.person.name))
|
||||||
|
.groupBy(identity)
|
||||||
|
.view.mapValues(_.size)
|
||||||
|
.toMap
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@main def main(): Unit =
|
@main def main(): Unit =
|
||||||
@ -137,3 +149,13 @@ case class TopSongs(songs: List[Song] = List()) {
|
|||||||
|
|
||||||
// print the songs
|
// print the songs
|
||||||
topSongs.printSongs()
|
topSongs.printSongs()
|
||||||
|
|
||||||
|
println("----------");
|
||||||
|
|
||||||
|
// print the number of songs by artist
|
||||||
|
val songsByArtist = topSongs.countSongsByArtist(topSongs.songs)
|
||||||
|
println("Number of songs by artist:")
|
||||||
|
songsByArtist.foreach {
|
||||||
|
case (artist, count) => println(s"$artist: $count")
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user