如何使用集合从 arrayList 中调用第二大数字

0 java collections arraylist

我需要我的 中的最高、第二高和第三高数字ArrayList。我通过调用获得最大值(即最高数字)Collections.max(),​​但我还需要第二大值和第三大值。
我的代码:

maxPartyid = 
Collections.max(electionresdashlist.get(k).getPartyNamesDTO());  //1st Highest
                         
System.out.println( "maxPartyid:::"+maxPartyid);
             
in DTO :
public class PartyNamesDTO implements Comparable<PartyNamesDTO>{

    private String partyId;
    public String getPartyId() {
        return partyId;
    }
    public void setPartyId(String partyId) {
        this.partyId = partyId;
    }
    private Integer votes;
    
    
    public Integer getVotes() {
        return votes;
    }
    public void setVotes(Integer votes) {
        this.votes = votes;
    }
    
    @Override
        public int compareTo(PartyNamesDTO emp) {
            return this.votes.compareTo(emp.getVotes());
        }
    
        public String toString(){
            return partyId;
        }
}        
             
             
Run Code Online (Sandbox Code Playgroud)

deh*_*asi 9

您可以使用 java 8 流来排序和跳过不必要的元素

list.stream().sorted(Comparator.reverseOrder()).limit(2).skip(1).findFirst()
Run Code Online (Sandbox Code Playgroud)

findFirst()返回Optional<T>您的对象的一个​​。


小智 7

list.stream().sorted(Collections.reverseOrder()).distinct().limit(2).skip(1).findFirst().get()
Run Code Online (Sandbox Code Playgroud)