【问题标题】:What data structure should I use for a music play queue?我应该为音乐播放队列使用什么数据结构?
【发布时间】:2014-03-23 19:10:51
【问题描述】:

我正在制作一个音乐流媒体应用程序。其中一项功能是播放队列,类似于 Spotify 的播放队列,其中的歌曲将自动从您开始播放的艺术家、专辑或播放列表中播放,或者播放您已排队的歌曲(如果有)。

我正在考虑为此需要什么数据结构。我目前正在权衡使用优先队列的选项,其中排队的歌曲优先于非排队的歌曲;或两个正常队列,一个自动队列和一个排队歌曲队列。我也愿意接受任何更好的解决方案。

我应该选择什么数据结构?

【问题讨论】:

  • +1 因为这表明解决手头问题的尝试比许多获得不少赞成但没有反对的问题要多得多。我猜它被否决的原因是因为您可以研究适用的数据结构以了解运行时间和程序复杂性,并且(至少尝试过)得出结论自己更好,但是您确实考虑了两种解决方案,所以是的,我不知道。也许它给人的印象过于基于意见。

标签: data-structures spotify-queue


【解决方案1】:

很可能是两个队列。

使用优先级队列(至少是 heap)操作需要 O(log n),而使用两个队列需要 O(1)。并不是说它会有很大的不同,除非你有一个 super 性能关键的应用程序并且有足够的项目来实际产生明显的差异(并且堆可能会带来足够的开销以使其变慢一个小的n)。

两个队列也应该使实现稍微更简单、更易于理解,这应该是这里的决定因素。

难道你不能只有一个队列 - 为选定的歌曲?如果队列为空,则可以随机生成下一个,假设您不想显示接下来将要播放的几首不在队列中的歌曲。

随机注释 - 您可能希望跟踪已播放的歌曲以最大限度地减少生成歌曲,从而消除同一歌曲播放频率过高的可能性 - 为此您可能使用hash table

【讨论】:

  • "你不能只有一个队列吗?" - 我确实想在排队的歌曲出现后有歌曲。不过谢谢!这是一个有用的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2014-05-29
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多