gpt4 book ai didi

java - 对象+列表中的对象列表?

转载 作者:行者123 更新时间:2023-11-29 08:24:25 25 4
gpt4 key购买 nike

我有一个有趣但麻烦的任务要解决。我需要创建一个播放列表(某种列表),其中包含歌曲和歌曲的其他子播放列表......每个播放列表都有一个播放模式(随机,顺序等)是否可以创建这样的播放列表?我考虑过破解子播放列表并将从中提取的歌曲添加到主播放列表或为添加到主播放列表的每首歌曲创建一个子播放列表(我不太喜欢这个想法)它以某种方式解决了这个问题,但是有必要保持每个播放列表的播放模式...

例如:

主播放列表(sequence palymode)有:(1) 歌曲1-1/(2) 子播放列表(song2-1, song2-2, song-2-3) with random playmode/(3) 歌曲1-2

期望的结果:(1) 歌曲1-1/(2) song2-3 (开始随机子播放列表)/(3) 歌曲2-1/(4) 歌曲 2-2/(5) 歌曲1-2/

我应该如何处理这个问题?

最佳答案

由于我怀疑这是某种作业,所以我只会为您提供部分实现,以便您了解如何进行。

创建一个抽象类 PlaylistElement,以后可以是 Song 或另一个 Playlist

abstract class PlaylistElement {
public abstract List<Song> printSongs();
}

实现类 Playlist 扩展 PlaylistElement

class Playlist extends PlaylistElement {
private List<PlaylistElement> elements;
private PlaybackMode playbackMode;
@Override
public List<Song> printSongs() {
if(this.playbackMode == PlaybackMode.RANDOM) {
List<Song> songs = new ArrayList<>();
List<PlaylistElement> shuffleElements = new ArrayList<>();

//Add all PlaylistElements from elements into shuffleElements
//and shuffle the shuffleElements collection

//insert your songs into the songs collection here by sequentially
//going through your
//PlaylistElements and inserting the result of their printSongs()
//implementation (e.g. in a for-loop)

return songs;
}
else if(this.playbackMode == PlaybackMode.SEQUENTIAL) {
//you can do this on your own
}
return null;
}
}

实现类 Song 扩展 PlaylistElement

class Song extends PlaylistElement {
private String title;
private String artist;
.
.
.
@Override
public List<Song> printSongs() {
//return a List with only this Song instance inside
return Arrays.asList(new Song[] { this });
}
}

为您的播放列表播放模式创建一个枚举。

enum PlaybackMode {
SEQUENTIAL, RANDOM;
}

希望这能给你一个大概的想法!为简洁起见省略了 Getters/Setters 和其他重要部分。

关于java - 对象+列表中的对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54502404/

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