1

我正在尝试在 App 引擎中存储一个可排序的队列。可排序,因为用户可以创建自定义订单。考虑它的最简单方法是歌曲列表。每 5 分钟从列表中选择一首新歌并播放。但是用户可以添加新歌曲并调整列表的播放顺序。播放一首歌曲后,它将从列表中删除。我如何为列表中的大量歌曲执行此操作。

我想过添加一个 sortOrder 字段,但是每当播放一首歌时,我都需要更新整个列表。然后我想保持浮动排序顺序,只跟踪最高和最低条目,但这似乎如果一次添加许多歌曲可能会导致麻烦。

任何有关我可以查看的设计模式的信息将不胜感激。另外,有什么方法可以使用歌曲的唯一键值来排序我的列表。我是否保证所有新的 id 都会比之前创建的更大,或者有什么方法可以保证这一点?

4

1 回答 1

0

我认为您只需要一个有序队列,您可以从中任意重新排列或添加/删除元素。如果是这种情况,您可以使用链表,它实际上是一种数据结构,而不是设计模式。

请参阅java.util.LinkedList

因此,例如,您可以使用remove(int index)删除列表中任何位置的歌曲,同时保留顺序。等效地,您可以使用add(int index, Object element)在列表中的任何索引处插入歌曲,同时保留顺序。那里还有其他实用方法,但这似乎是实现您所需要的基础。

于 2013-01-12T21:41:33.987 回答