Java 按列表升序排序

Java 按列表升序排序,java,list,comparator,Java,List,Comparator,我正在练习使用比较器和接口,这让我很难适应。我正在尝试创建一个布尔方法,如果列表按升序排列,该方法将返回true 但是由于某种原因,如果我使用集合.sort,我会得到一个错误 我的代码中到底遗漏了什么?为什么它不起作用 代码如下: 建造师 public class Stijgen implements RijtjesControle{ private int nummer; public Stijgen(int nummer) { this.nummer = nummer; } p

我正在练习使用比较器和接口,这让我很难适应。我正在尝试创建一个布尔方法,如果列表按升序排列,该方法将返回true

但是由于某种原因,如果我使用
集合.sort
,我会得到一个错误

我的代码中到底遗漏了什么?为什么它不起作用

代码如下:

建造师

public class Stijgen implements RijtjesControle{

private int nummer;

public Stijgen(int nummer) {
    this.nummer = nummer;
}

public int getNummer() {
    return nummer;
}
主要

public static void main(String[] args) {
    List<Stijgen> rijtje = new ArrayList<Stijgen>();
    rijtje.add(new Stijgen(4){});
    rijtje.add(new Stijgen(7){});
    rijtje.add(new Stijgen(1){});
    rijtje.add(new Stijgen(9){});
    rijtje.add(new Stijgen(3){});

    System.out.println("Eerst de getallen op een rijtje zoals het nu is:");
    for (Stijgen rijtje1 : rijtje) {
        System.out.println(rijtje1.getNummer());
    }  
    System.out.println("Nu gesorteed op stijgende volgorde");
    Collections.sort(rijtje);
    for (Stijgen rijtje1 : rijtje) {
        System.out.println(rijtje1);
    }
}

@Override
public <Stijgen extends Comparable<Stijgen>> boolean isStijgend(List<Stijgen> rijtje) {
 Iterator<Stijgen> iter = rijtje.iterator();
 if(!iter.hasNext()){
     return true;
 }
 Stijgen stijgen = iter.next();
 while(iter.hasNext()){
      Stijgen stijgen1 = iter.next();
      if(stijgen.compareTo(stijgen1) > 0){
         return false;
      }
      stijgen = stijgen1;
 }
    return true;
}
}
publicstaticvoidmain(字符串[]args){
List rijtje=new ArrayList();
rijtje.add(新的Stijgen(4){});
rijtje.add(新的Stijgen(7){});
rijtje.add(新的Stijgen(1){});
rijtje.add(新的Stijgen(9){});
rijtje.add(新的Stijgen(3){});
System.out.println(“Eerst de getallen Ope een rijtje zoals het nu is:”);
对于(Stijgen rijtje1:rijtje){
System.out.println(rijtje1.getNummer());
}  
System.out.println(“Nu Gesorted op stijgende volgorde”);
集合。排序(rijtje);
对于(Stijgen rijtje1:rijtje){
系统输出打印LN(rijtje1);
}
}
@凌驾
公共布尔值isStijgend(列表rijtje){
迭代器iter=rijtje.Iterator();
如果(!iter.hasNext()){
返回true;
}
Stijgen Stijgen=iter.next();
while(iter.hasNext()){
Stijgen stijgen1=iter.next();
如果(stijgen.compareTo(stijgen1)>0){
返回false;
}
stijgen=stijgen1;
}
返回true;
}
}

当Stijgen没有实现Comparable接口时,不能使用java.util.Collections.sort(列表),除非使用sort方法,并将Stijgen的Comparator作为第二个参数:java.util.Collections.sort(列表,Comparator)

//rijtje的副本
已排序列表=新阵列列表(rijtje);
//按比较器对副本排序
//JAVA8:Collections.sort(排序,(a,b)->a.getNummer()-b.getNummer());
Collections.sort(已排序,新的Comparator(){
@凌驾
公共整数比较(Stijgen a、Stijgen b){
返回a.getNummer()-b.getNummer();
}
});
//检查rijtje是否已分类
System.out.println(rijtje.equals(排序));

错误是什么?欢迎使用堆栈溢出!请拿着,环顾四周,仔细阅读,尤其是和。-请将您的示例代码设置为a
// copy of rijtje
List<Stijgen> sorted = new ArrayList<Stijgen>(rijtje);
// sort copy by comparator
// JAVA8: Collections.sort(sorted, (a, b) -> a.getNummer() - b.getNummer()); 
Collections.sort(sorted, new Comparator<Stijgen>() {
@Override
public int compare(Stijgen a, Stijgen b) {
return a.getNummer() - b.getNummer();
}
});
// check if rijtje is sorted
System.out.println(rijtje.equals(sorted));