2017-05-18 1 views
0

Ich habe diese Klasse:Liste Sortierung <T> in Java

public class Job { 
    private int priority; 
    private String name; 

    public int getPriority() { 
     return priority; 
    } 

    public void setPriority(int priority) { 
     this.priority = priority; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(Stirng name) { 
     this.name= name; 
    } 
} 

und ich eine Sammlung davon in der folgenden Variable erstellt:

List<Job> _jobs = ... 

Wie kann ich die Liste nach Priorität sortiert werden? (Oberster Wert der Liste wäre der höchste Wert)

Ich habe im Internet eine Referenz gefunden, konnte aber kein ähnliches Beispiel finden.

+3

Errr ... Wie lange haben Sie gesucht? Zumindest an meinem Ende gibt "java sort list property" die vorhandene Frage als ersten Link an ;-) – GhostCat

Antwort

2

Shortes Weg wäre, die Sortiermethode auf der Liste selbst zu verwenden, aber dies erfordert eine veränderbare Liste:

list.sort(Comparator.comparingInt(Job::getPriority)) 

Falls Sie haben ein unveränderbare Liste, können Sie Streams dafür verwenden:

Wenn Sie auf einem JDK vor 1.8 laufen, verwenden Sie die Sortierung mich thod der Collections-Klasse (erfordert eine veränderbare Liste):

Collections.sort(list, new Comparator<Job>() { 

     @Override 
     public int compare(final Job o1, final Job o2) { 

      return o1.getPriority()-o2.getPriority(); 
     } 
    }); 
+0

Wenn Sie Java 8 verwenden, verwenden Sie bitte nicht 'Collections.sort' sondern' List.sort' wie in gezeigt das erste Beispiel. –

+0

@ OlivierGrégoire Meinst du in allen Fällen? Weil 'List.sort' nicht die Möglichkeit hat, natürliche Reihenfolge zu verwenden – Michael

+0

Dank, wird dieses versuchen – yonan2236

0

Sie einen Lambda verwenden:

_jobs.sort((a,b) -> Integer.compare(a.getPriority(), b.getPriority())); 
    System.out.println(_jobs);