2017-09-26 272 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));