在SQLite数据库中表示LinkedList

时间:2013-02-20 18:52:54

标签: android sqlite data-structures linked-list simplecursoradapter

我想在我的Android应用中代表一个播放列表。如果播放列表为空,我的项目只会按日期显示。如果播放列表包含少数项目,则应按顺序显示播放列表,然后显示其余项目(仍按日期)。

但是,我不确定如何有效地建模。我怎么能以一种方式构建我的数据库,以便在播放列表中插入项目(到任何位置)变得容易,并且仍然以快速(和合理的简单)方式选择它们。

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

  A,B,C,D,E,F,G

用户现在将F和D添加到他的播放列表中。现在应按此顺序显示这些项目:

 F,D,A,B,C,E,G

3 个答案:

答案 0 :(得分:0)

  

我如何以这种方式构建我的数据库,以便变得容易   插入项目(到任何位置)

创建经典 heap table ,提供快速插入 - “插入您可以插入的第一个位置。”

  

仍然以快速(合理简单)的方式选择它们。

所以很有可能你需要创建index。索引是在列上创建的,这些列通常出现在 where clause 之后。通过创建索引也会创建 b+ tree ,因此在您想要创建任何索引时应该小心。

还有更多方法,但它强烈依赖于数据源类型,例如Oracle提供了许多类型的表,具有各种优点和缺点。

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

答案 1 :(得分:0)

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

SELECT * FROM ITEMS_TABLE
ORDER BY CREATION_DATETIME DESC;

答案 2 :(得分:0)

我正在使用此解决方案。我已经在表格中添加了一个额外的列,说" sequence"它将具有订单号,其中记录被提取..同时通过"序列"获取订单。你将获得所需的订单。

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