gpt4 book ai didi

java - 播放列表随机播放开/关

转载 作者:搜寻专家 更新时间:2023-10-30 23:49:17 27 4
gpt4 key购买 nike

我正在用 java 编程,但我也可以采用 C++(甚至伪)代码,没问题。这是我的意思:

我有一个类似播放列表的东西,例如 List<MyPlayListItem> lsMyPlaylist .现在我想给用户洗牌的机会,然后再回到有序列表。我的意思是,假设用户处于“随机播放模式”,播放器例如从歌曲 7 跳到歌曲 5,但随后用户关闭了“随机播放模式”,因为他接下来想听歌曲 6。您将如何解决这个问题?

我有几个想法:

  • 使用两个列表,一个原始的,一个打乱的(存储太多)
  • 有一个 int 列表,我将其打乱顺序,然后用作索引以获取元素(可能更好一点)
  • 使用哈希表(解决方案?不过我可能需要一些建议)

哦,这不是家庭作业(我希望我回到那个年龄 :-D)。

编辑:

我刚刚完成了这样一个实现:

PlayList<E> implements List {

private List<E> lsObjs = null;
private List<Integer> lsIdxs = null;

boolean bShuffleMode = false;
int Pos = 0;
}

但是现在,我在想这样的事情:

PlayListItem<E> {

int iNextItem = 0;

}

PlayList<PlayListItem> implements List {

private List<PlayListItem> lsObjs = null;

boolean bShuffleMode = false;
int Pos = 0;

}

不确定...仍然需要建议。如果我在列表中指定对象,我什至可以实现 List 吗?嗯……

最佳答案

我假设您有一台没有几 K 备用的移动设备。拥有两个列表不会重复列表中的元素,列表中的元素会大得多。

将原始索引作为字段添加到 MyPlayListItem。洗牌后,您可以使用比较器将它们按索引排序,以将它们恢复为原始顺序。注意:除非索引小于 4 个字节,否则这将使用与有两个列表一样多的内存。

在 32 位系统上,int[] 和 List 消耗的内存量几乎相同。 (大约相差16个字节)

关于java - 播放列表随机播放开/关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693045/

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