Android 在SQLite数据库中表示LinkedList

Android 在SQLite数据库中表示LinkedList,android,sqlite,data-structures,linked-list,simplecursoradapter,Android,Sqlite,Data Structures,Linked List,Simplecursoradapter,我想在我的Android应用程序中显示一个播放列表。如果播放列表为空,则仅按日期显示我的项目。如果播放列表包含几个项目,则播放列表应按顺序显示,然后是剩余项目(仍然按日期显示) 然而,我不确定如何有效地对此进行建模。我如何以一种简单的方式构建我的数据库,以便在播放列表中插入项目(到任何位置),并且仍然以一种快速(合理且简单)的方式选择它们 示例我有一个包含项目a、B、C、D、E、F、G的列表。首先,项目按顺序显示: A,B,C,D,E,F,G 用户现在将F和D添加到他的播放列表中。项目现在

我想在我的Android应用程序中显示一个播放列表。如果播放列表为空,则仅按日期显示我的项目。如果播放列表包含几个项目,则播放列表应按顺序显示,然后是剩余项目(仍然按日期显示)

然而,我不确定如何有效地对此进行建模。我如何以一种简单的方式构建我的数据库,以便在播放列表中插入项目(到任何位置),并且仍然以一种快速(合理且简单)的方式选择它们

示例我有一个包含项目a、B、C、D、E、F、G的列表。首先,项目按顺序显示:

  A,B,C,D,E,F,G
用户现在将F和D添加到他的播放列表中。项目现在应按以下顺序显示:

 F,D,A,B,C,E,G
如何以这样的方式构建数据库,使其易于 插入项目(到任何位置)

创建经典的
堆表
,该表提供快速插入功能-“在可以插入的第一个位置插入。”

并且仍然以一种快速(合理且简单)的方式选择它们

因此,您最有可能需要创建。索引是在最常出现在where子句后面的列上创建的。通过创建索引也会创建b+树,因此在创建任何索引时都要小心

还有更多的方法,但这在很大程度上取决于数据源类型,例如Oracle提供了多种类型的表,它们各有优缺点


此外,您将选择的具体方法还取决于数据库对数据库的要求、表中记录的平均数量等等。

如果您希望根据某种时间戳(例如,您希望最新的时间戳先出现)订购项目,则只需在表中添加一个时间戳列,例如创建日期或更新日期/时间。然后,在查询表时,使用它进行排序

SELECT * FROM ITEMS_TABLE
ORDER BY CREATION_DATETIME DESC;

我正在使用这个解决方案。我在表中添加了一个额外的列,称为“sequence”,其中包含要获取的记录的订单号。。在按“顺序”获取表格时,您将获得所需的顺序


但是插入一行或删除一行需要对序列进行大量更新。

听起来不错,但是如何创建一个select语句,使这些项按正确的顺序排列呢?没有任何特殊的模块或Android不支持的东西。所以有时需要做出“妥协”。你刚才描述的是对的,不可能在db中实现。所以我的第一个想法是让经典有序选择,但如果你在播放列表中有一些项目,那么从它们那里获取一些特定的数据(例如id),以便能够执行下一个查询,选择播放列表中的项目(将它们保存到经典列表),并执行第二个查询,从db中选择其他项目(项目将从上一次选择保存到列表中)。从项目表中选择*