我目前正在尝试构建一个播放列表函数,该函数采用音乐库并从中生成一个具有指定最短持续时间的随机播放列表。这个想法是,它需要用户的最低评级 - 但是,如果该评级的轨道不足以填充播放列表,则会选择 minimumRating - 1
的轨道。 。因此,如果您想要 60 分钟的 5 星级轨道,但没有足够的轨道,程序将尝试用 4 星级轨道来填补剩余部分。
所以我需要一种递减 minimumRating
的方法一旦它到达 for 循环的末尾,然后再次将其关闭。如果 for 循环已到达末尾,是否有一种方法可以返回某些内容(可能是 boolean 值)?
如果有帮助,可以在这里找到我当前的代码:
public ArrayList<Track> createPlaylist(int minRating, int minDuration) {
minDuration = minDuration * 60;
ArrayList<Track> shuffledList = trackList;
ArrayList<Track> playlist = new ArrayList<Track>();
Collections.shuffle(shuffledList);
int playlistDuration = 0;
while (playlistDuration < minDuration) {
for (Track track : shuffledList) {
if (track.getRating() >= minRating) {
playlist.add(track);
playlistDuration += track.getLength();
}
}
}
return playlist;
}
最佳答案
你可以这样做:
public ArrayList<Track> createPlaylist(final int minRating, int minDuration) {
minDuration = minDuration * 60;
final ArrayList<Track> shuffledList = trackList;
final ArrayList<Track> playlist = new ArrayList<Track>();
Collections.shuffle(shuffledList);
int playlistDuration = 0;
int myMin = minRating;
while (playlistDuration < minDuration && myMin > 0) {
for (final Track track : shuffledList) {
if (track.getRating() >= myMin && !playlist.contains(track)) {
playlist.add(track);
playlistDuration += track.getLength();
}
}
myMin--;
}
return playlist;
}
关于java - 如何判断数组列表上的 for 循环是否已结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26733246/