2017-09-26 171 views
1

我正在练习比较器和接口,我有相当的难度。我试图做一个布尔方法返回true如果列表是升序。按名称排序升序

但由于某种原因,如果我使用Collections.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; 
} 
} 
+1

什么是错误? – Berger

+1

欢迎来到Stack Overflow! 请参考[游览](/游览),环顾四周,阅读[帮助中心](/帮助),特别是[如何提出一个好问题?](/ help/how-to-问)和[我可以在这里询问什么主题?](/ help/on-topic).-请将您的excample代码设置为[Minimal,Complete和Verifiable示例](https://stackoverflow.com/help/mcve ) –

回答

2

不能使用java.util.Collections.sort(列表)时Stijgen好好尝试一下实现接口Comparable,除非您使用sort方法并将Stijgen的Comparator作为第二个参数:java.util.Collections.sort(List,Comparator)

// 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));