저는 현재 음악 라이브러리를 가져와 지정된 최소 재생 시간의 랜덤 재생 목록을 생성하는 재생 목록 기능을 만들려고합니다. 사용자가 최소 등급을 취한다는 아이디어가 있지만 재생 목록을 채우기에 충분한 등급의 트랙이 없으면 minimumRating - 1
트랙으로 이동합니다. 따라서 60 분짜리 별 5 개 트랙을 원했지만 충분하지 않은 경우 프로그램은 나머지 별 4 개짜리 트랙으로 채우기를 시도합니다.arraylist에서 for-loop의 끝에 도달했는지 확인하는 방법은 무엇입니까?
그래서 for 루프의 끝에 도달하면 minimumRating
을 감소시킨 다음 다시 설정하는 방법이 필요합니다. for-loop가 끝났을 때 무언가를 반환하는 메서드 (예 : 부울 값)가 있습니까?
, 내 현재 코드는 여기에서 찾을 수 있습니다 :
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;
}
왜 별 정렬 된 목록을 60 분에 네 개의 루프를 종료하지? 그리고 여전히 for (;;) - 루프 구문이 있습니다. – Christian