3

音楽ストリーミングアプリを作っています。機能の 1 つは、Spotify のような再生キューで、開始したアーティスト、アルバム、またはプレイリストから曲が自動的に再生されるか、キューに入っている曲があれば再生されます。

これに必要なデータ構造を検討しています。私は現在、キューに入れられた曲がキューに入れられていない曲よりも優先される優先キューを使用するオプションを検討しています。または 2 つの通常のキュー、自動キューとキューに入れられた曲のキュー。私はまた、そこにあるより良い解決策に対してもオープンです。

どのデータ構造を選択すればよいですか?

4

1 に答える 1

4

ほとんどの場合、2 つのキューです。

プライオリティ キュー (少なくともheap ) では、操作に O(log n) かかりますが、2 つのキューでは O(1) かかります。非常にパフォーマンスが重要なアプリケーションがあり、実際に顕著な違いを生むのに十分なアイテムがない限り、大きな違いが生じるわけではありません(ヒープには、小さなn.

2 つのキューを使用すると、もう少し単純で理解しやすい実装になるはずです。これがここでの決定要因になるはずです。

ただし、選択した曲のキューを 1 つだけにすることはできませんか? キューが空の場合の次の曲は、キューにない次に再生されるいくつかの曲を表示したくないと仮定して、ランダムに生成できます。

ランダムなメモ - 同じ曲が頻繁に再生される可能性を排除するような方法で生成された曲を最小限に抑えるために、既に再生された曲を追跡したい場合があります。これには、おそらくハッシュテーブルを使用できます。

于 2014-03-23T20:56:58.167 に答える