gpt4 book ai didi

java - Android中歌曲的数据结构

转载 作者:行者123 更新时间:2023-11-30 09:34:35 24 4
gpt4 key购买 nike

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

字符串的形式例如。 “吉他、鼓、西类牙语、悲伤”

现在我关心的是在我的代码中提出一个数据结构来移动这个 mp3 文件(它的路径)和这个字符串。使它更具挑战性的是:

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

我正在寻找有关良好数据结构的建议。

我应该事先拆分评论部分并将其保存在某种集合中吗?还是在我循环播放每首歌曲时这样做?拆分它以根据输入检查它?

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

最佳答案

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

Map<String, List<Song>> tagIndex

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

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

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

我认为所有 Android 设备都可以使用 SQLite。如果这确实是易于集成的情况,那么您可以通过多种方式存储和访问标签。

  1. 将标签存储在数据库和评论中。
  2. 仅将标签存储在数据库中。

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

第二种方法与第一种方法部分相似,其中标签存储在数据库中并随时维护。但是没有初始构建,如果卸载应用程序,标签可能会被删除。这可能会或可能不会被接受,但这种方法比第一种方法更简单。

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

Table: tag_index

Columns: (tag_name, song_name, song_path)

关于java - Android中歌曲的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11752018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com