gpt4 book ai didi

java - 使用比较器对数组列表进行排序

转载 作者:行者123 更新时间:2023-12-02 13:31:42 25 4
gpt4 key购买 nike

将输出打印为{第一个最大值,第一个最小值,第二个最大值,第二个最小值,第三个最大值,第三个最小值等等......}

   import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

import compl.compl;

public class Arraylist1 {


public static void main(String args[]){

List <Integer>list= new ArrayList <Integer> ( );

list.add(20);
list.add(30);
list.add(70);
list.add(50);
list.add(60);
list.add(40);

Comparator<Integer> cmp=new Comparator<Integer>() {

@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
int pos=0;
if(pos%2==0){
if(o1<o2){
return 1;
}
}
if(pos%2!=0){
if(o1>o2){
return -1;
}
}
pos++;
}
}
};

Collections.sort(list, cmp);
for(int i=0;i<list.size();i++){
System.out.println(list);
}


}
}

出现错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
This method must return a result of type int

at Arraylist1$1.compare(Arraylist1.java:51)
at Arraylist1$1.compare(Arraylist1.java:1)
at java.util.TimSort.countRunAndMakeAscending(TimSort.java:324)
at java.util.TimSort.sort(TimSort.java:189)
at java.util.TimSort.sort(TimSort.java:173)
at java.util.Arrays.sort(Arrays.java:659)
at java.util.Collections.sort(Collections.java:217)
at Arraylist1.main(Arraylist1.java:67)

不明白为什么我会收到此错误,我猜这会导致比较器需要返回类型,但在我的情况下,无法指定返回类型。

最佳答案

您的代码无法被编译。为此,您在所有情况下都有返回值 n 比较器。

 if (pos % 2 == 0) {
if (o1 < o2) {
return 1;
} else if (o1 > o2) {
return -1;
}
pos++;
TODO: defie return value here
} else { TODO: define return value here }

重要提示:你的变量 pos 将始终为 0。因为它是方法变量,并且每次调用方法时都会创建它。如果您只需要实时订购,您可以将比较器定义为(按降序排列)

return o2.compareTo(o1);

按升序排列

return o1.compareTo(o2);

关于java - 使用比较器对数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43165163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com