You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:01:03