2017-09-26 3 views
1

Ich übe mit Komparatoren und Schnittstellen und ich habe es ziemlich schwer damit. Ich versuche, eine boolesche Methode zu erstellen, die true zurückgibt, wenn die Liste in aufsteigender Reihenfolge ist.Sortierung aufsteigend mit Liste

Aber aus irgendeinem Grund bekomme ich einen Fehler, wenn ich Collections.sort verwende.

Was genau fehlt mir in meinem Code und warum funktioniert es nicht? Hier

ist der Code:

Constructor

public class Stijgen implements RijtjesControle{ 

private int nummer; 

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

public int getNummer() { 
    return nummer; 
} 

Der Haupt

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

Was ist der Fehler? – Berger

+1

Willkommen bei Stack Overflow! Bitte nehmen Sie die [Tour] (/ Tour), sehen Sie sich um und lesen Sie die [Hilfe] (/ help), insbesondere [Wie stelle ich eine gute Frage?] (/ Help/how-to fragen) und [Welche Themen kann ich hier fragen?] (/ help/on-topic) .- Bitte machen Sie Ihren Beispielcode zu einem [Minimal, Complete und Verifable Beispiel] (https://stackoverflow.com/help/mcve) –

Antwort

2

Sie können nicht java.util.Collections.sort (List) verwenden, wenn Stijgen doens't implementieren Sie die Schnittstelle Comparable, es sei denn, Sie verwenden die Sortiermethode mit einem Komparator für Stijgen als zweiten Parameter: java.util.Collections.sort (Liste, Komparator)

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