Android中歌曲的数据结构

时间:2012-08-01 03:04:45

标签: java android data-structures collections

基本上我正在创建一个Android音乐播放器。我已经设法将STRING存储到我库中每首歌的“评论”部分。

String的形式如下。 “吉他,鼓,西班牙语,悲伤”

现在我的担心是在我的代码中提出一个数据结构来移动这个mp3文件(它的路径)以及这个STRING。更具挑战性的是:

上面看到的字符串由逗号“,”组成,所以每次用户想要创建播放列表时,他们只会给我一个单词列表(TAGS),我必须查看每首歌才能查找如果它有TAG他们正在寻找。我这样做是通过将存储在歌曲的COMMENT部分中的字符串拆分为子字符串(TAGS)并在用户输入时将其匹配。

我正在寻找一个良好的数据结构的建议。

我应该事先拆开评论部分并将其保存在某种集合中吗?还是在我循环播放每首歌的时候呢?分开它来检查输入?

我想过使用ArrayList> 但也许有更好的方法...

2 个答案:

答案 0 :(得分:1)

Arraylist在我看来是好的方式,因为你会有一个我想的不同TAGS列表。

但我建议不要使用字符串作为类型,也许你应该使用一个标记类列表,这将在你需要进行更改时为将来提供更大的灵活性。

希望它有所帮助。

答案 1 :(得分:1)

如果歌曲列表很长,反向索引会更合适。这不是循环遍历每首歌曲并检查是否包含标签,您可以直接找到标签并提取与其关联的歌曲列表。直接跳转到标签可以使用Map完成,在条目中,值可以是歌曲列表。

Map<String, List<Song>> tagIndex

我假设Song是一个抽象歌曲的课程。

如果无法保留索引,则可以在后台启动时构建它。

EDIT-1 :(回复第一条评论)

我认为所有Android设备都提供SQLite。如果这确实是一个易于集成的情况,那么有几种方法可以存储和访问标记。

  1. 将标签存储在数据库和评论中。
  2. 仅在数据库中存储代码。
  3. 在第一种方法中,标签将在应用程序重新安装后继续存在。但是其他应用程序也可以访问注释,这些注释可能以其他方式使用它或编辑/覆盖您的值。在这种方法中,您必须在应用程序安装时构建索引,并在构建初始索引后保持注释和数据库同步。

    第二种方法部分类似于第一种方式,其中标签存储在数据库中并在旅途中进行维护。但是如果没有安装应用程序,则没有初始构建和标记可能会被删除。这可能是也可能是不可接受的,但这种方法比第一种方法简单。

    如果使用SQLite,则根本不需要在内存中维护标记。一切都可以在数据库中维护。

      

    表:tag_index

         

    列:(tag_name,song_name,song_path)