Java实现从ArrayList播放列表返回首个最长时长歌曲的方法
解决返回播放列表中首个最长时长歌曲的问题
我是Java新手,正在编写一个方法,仅依据时长(分钟)从播放列表(ArrayList)中返回时长最长的歌曲。若有多首歌曲时长相同且均为最长,需返回最先遇到的那一首。当前代码如下,请问如何确保返回首个最长时长歌曲而非最后一首?
public Song getLongestSong() { if (this.songs.isEmpty()) { return null; } Song longestSong = this.songs.get(0); for (Song songs: this.songs) { if (songs.getMinutes() >= longestSong.getMinutes()) { longestSong = songs; } } return longestSong; }
问题原因与解决方法
当前代码用>=作为判断条件,每次遇到和当前最长歌曲时长相同的曲目时,都会替换掉longestSong,最终返回的是最后一首同时长的歌曲。
只需要把判断条件改成>,这样只有遇到时长严格大于当前最长歌曲的曲目时,才更新longestSong。第一首最长时长的歌曲被赋值后,后续同时长的歌曲不会触发替换,就能保留最先遇到的那首。
另外原代码的循环变量名songs和成员变量重名,容易混淆,建议改成song,修改后的完整代码如下:
public Song getLongestSong() { if (this.songs.isEmpty()) { return null; } Song longestSong = this.songs.get(0); for (Song song : this.songs) { if (song.getMinutes() > longestSong.getMinutes()) { longestSong = song; } } return longestSong; }
内容的提问来源于stack exchange,提问作者mehso
相关产品推荐
相关产品推荐

