Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用集合从arrayList调用第二大号码_Java_Arraylist_Collections - Fatal编程技术网

Java 如何使用集合从arrayList调用第二大号码

Java 如何使用集合从arrayList调用第二大号码,java,arraylist,collections,Java,Arraylist,Collections,我需要我的ArrayList中的最高、第二高和第三高数字。我通过调用Collections.max()获得最大值(即最大值),但我还需要第二大值和第三大值。 我的代码: maxPartyid= Collections.max(electionresdashlist.get(k.getPartyNamesTo())//第一高 System.out.println(“maxPartyid::”+maxPartyid); 在DTO中: 公共类PartyNamesTo实现了可比较的{ 私有字符串par

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

maxPartyid=
Collections.max(electionresdashlist.get(k.getPartyNamesTo())//第一高
System.out.println(“maxPartyid::”+maxPartyid);
在DTO中:
公共类PartyNamesTo实现了可比较的{
私有字符串partyId;
公共字符串getPartyId(){
返回partyId;
}
公共void setPartyId(字符串partyId){
this.partyId=partyId;
}
私人整数投票;
公共整数getvows(){
返回投票;
}
公众投票(整数投票){
这.投票=投票;
}
@凌驾
公共int比较(PartyNamesTo emp){
返回此.voces.compareTo(emp.getVoces());
}
公共字符串toString(){
返回partyId;
}
}        

再次搜索不带第一个最大值的最大值,获得第二个最大值。

再次搜索不带第一个最大值的最大值,获得第二个最大值。

尝试以下代码:-

Collections.sort(electionresdashlist);

System.out.println( "maxPartyid:::"+electionresdashlist.get(0).getPartyNamesDTO());
System.out.println( "2nd maxPartyid:::"+electionresdashlist.get(1).getPartyNamesDTO());
System.out.println( "3rd maxPartyid:::"+electionresdashlist.get(2).getPartyNamesDTO());


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;
        }
}  
Collections.sort(electionresdashlist);
System.out.println(“maxPartyid::”+electionresdashlist.get(0.getPartyNamesDTO());
System.out.println(“第二个maxPartyid::”+electionresdashlist.get(1.GetPartyNamesTo());
System.out.println(“第三个maxPartyid::”+electionresdashlist.get(2.GetPartyNamesTo());
在DTO中:
公共类PartyNamesTo实现了可比较的{
私有字符串partyId;
公共字符串getPartyId(){
返回partyId;
}
公共void setPartyId(字符串partyId){
this.partyId=partyId;
}
私人整数投票;
公共整数getvows(){
返回投票;
}
公众投票(整数投票){
这.投票=投票;
}
@凌驾
公共int比较(PartyNamesTo emp){
返回此.voces.compareTo(emp.getVoces());
}
公共字符串toString(){
返回partyId;
}
}  
请尝试以下代码:-

Collections.sort(electionresdashlist);

System.out.println( "maxPartyid:::"+electionresdashlist.get(0).getPartyNamesDTO());
System.out.println( "2nd maxPartyid:::"+electionresdashlist.get(1).getPartyNamesDTO());
System.out.println( "3rd maxPartyid:::"+electionresdashlist.get(2).getPartyNamesDTO());


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;
        }
}  
Collections.sort(electionresdashlist);
System.out.println(“maxPartyid::”+electionresdashlist.get(0.getPartyNamesDTO());
System.out.println(“第二个maxPartyid::”+electionresdashlist.get(1.GetPartyNamesTo());
System.out.println(“第三个maxPartyid::”+electionresdashlist.get(2.GetPartyNamesTo());
在DTO中:
公共类PartyNamesTo实现了可比较的{
私有字符串partyId;
公共字符串getPartyId(){
返回partyId;
}
公共void setPartyId(字符串partyId){
this.partyId=partyId;
}
私人整数投票;
公共整数getvows(){
返回投票;
}
公众投票(整数投票){
这.投票=投票;
}
@凌驾
公共int比较(PartyNamesTo emp){
返回此.voces.compareTo(emp.getVoces());
}
公共字符串toString(){
返回partyId;
}
}  
另一种方法是使用comparator根据投票数排列列表元素,前3名将给出结果


另一种方法是使用comparator根据投票数排列列表元素,前3名将为您提供结果

,因为您在
PartyNamesTo
上实现了
Comparable
界面,您只需执行以下操作即可

Collections.sort(electionresdashlist)
这将使您的列表按照
compareTo
逻辑进行排序,如果您的排序是升序的,那么您可以按如下方式获得最大记录

electionresdashlist.get(electionresdashlist.size()-1);
electionresdashlist.get(electionresdashlist.size()-2);
electionresdashlist.get(electionresdashlist.size()-3);

如果它是降序的,则相反

因为您在
PartyNamesDTO
上实现了
Comparable
接口

Collections.sort(electionresdashlist)
这将使您的列表按照
compareTo
逻辑进行排序,如果您的排序是升序的,那么您可以按如下方式获得最大记录

electionresdashlist.get(electionresdashlist.size()-1);
electionresdashlist.get(electionresdashlist.size()-2);
electionresdashlist.get(electionresdashlist.size()-3);

如果是降序排列,则可以使用Java8流对不必要的元素进行排序和跳过

list.stream().sorted(Comparator.reverseOrder()).limit(2).skip(1).findFirst()

findFirst()
返回对象的
可选

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

list.stream().sorted(Comparator.reverseOrder()).limit(2).skip(1).findFirst()
static void getKthHighest(List<Integer> list, int k) {
    Optional<Integer> element = list.stream().sorted(Collections.reverseOrder()).limit(k).skip(k - 1).findFirst();
    if(element.isPresent()) {
        System.out.println(element.get());
    }
}
findFirst()
返回对象的
可选值。

静态void getKthHighest(列表,int k){
static void getKthHighest(List<Integer> list, int k) {
    Optional<Integer> element = list.stream().sorted(Collections.reverseOrder()).limit(k).skip(k - 1).findFirst();
    if(element.isPresent()) {
        System.out.println(element.get());
    }
}
可选元素=list.stream().sorted(Collections.reverseOrder()).limit(k.skip(k-1.findFirst()); if(element.isPresent()){ System.out.println(element.get()); } }
静态无效getKthHighest(列表列表,整数k){
可选元素=list.stream().sorted(Collections.reverseOrder()).limit(k.skip(k-1.findFirst());
if(element.isPresent()){
System.out.println(element.get());
}
}
这可能对你有帮助

Integer[] arr= {80,19,32,150,2,78};
IntStream arrstream=Arrays.stream(arr);
OptionalInt firstmaxNum=stream.max();

IntStream secondmaxstream=Arrays.stream(arr);
OptionalInt secondMaximum=stream1.filter(s->s!=maxNum.getAsInt()).max();

System.out.println(" first maximum number :" +firstmaxNum.getAsInt());
System.out.println(" second maximum number :" +secondMaximum.getAsInt());}
这可能会对您有所帮助。

Integer integer2=numbers.stream().max((x,y)->x.compareTo(y)).get();
Integer[] arr= {80,19,32,150,2,78};
IntStream arrstream=Arrays.stream(arr);
OptionalInt firstmaxNum=stream.max();

IntStream secondmaxstream=Arrays.stream(arr);
OptionalInt secondMaximum=stream1.filter(s->s!=maxNum.getAsInt()).max();

System.out.println(" first maximum number :" +firstmaxNum.getAsInt());
System.out.println(" second maximum number :" +secondMaximum.getAsInt());}
Integer integer3=numbers.stream().filter(x->xx.compareTo(y)).get(); System.out.println(“第二个最大值为:“+integer3”);
Integer integer2=numbers.stream().max((x,y)->x.compareTo(y)).get();
Integer integer3=numbers.stream().filter(x->xx.compareTo(y)).get();
System.out.println(“第二个最大值为:“+integer3”);

排序,然后取第一、第二、第三、第四……您已经完成了95%的复杂工作,但您找不到如何完成剩余的5%,即排序并获取第n个元素。先生,您能详细解释一下吗!你看过堆了吗?排序,然后取第一、第二、第三、第四……你已经做了95%的复杂工作,但你找不到如何做剩下的5%,也就是排序并得到第n个元素。先生,你能详细解释一下吗!你看过堆了吗?