我正在尝试在App引擎中存储可排序的队列。可在用户中排序,可以创建自定义订单。最简单的思考方式就是歌曲列表。每5分钟从列表中选择一首新歌并播放。但是用户可以添加新歌曲并调整列表的播放顺序。播放一首歌后,它将从列表中删除。如何为列表中的大量歌曲执行此操作。
我考虑添加一个sortOrder字段,但每当播放一首歌时,我需要更新整个列表。然后,我保持一个浮动排序顺序,只跟踪最高和最低的条目,但这似乎可能会导致麻烦,如果一次添加许多歌曲。
我可以非常感谢任何有关我可以看到的设计模式的信息。此外,有什么方法可以使用歌曲的唯一键值来订购我的列表。我保证所有新的ID都会比早期创建的更大,或者有什么方法可以保证这个?
答案 0 :(得分:0)
我认为您只需要一个有序的队列,您可以随意重新排列或添加/删除元素。如果是这种情况,您可以使用链表,这实际上是一种数据结构,而不是设计模式。
因此,例如,您可以使用remove(int index)
删除列表中任意位置的歌曲,同时保留排序。同样,您可以使用add(int index, Object element)
在列表中的任何索引处插入歌曲,同时保留顺序。还有其他实用方法,但这似乎是实现所需内容的基础。