2017-01-22 3 views
1

i eine Liste von Objekten, die ich sortieren möchte, erstelle ich diese Liste durch eine bestehende Liste Bereitstellen erster dann als meine Liste vervollständigen durch andere Objekte hinzugefügt ähnlicheeine Liste in java Sortierung

Client c = service.getClientById(idClient); 
    Commande pc = null; 
    List<Commande> commandes = new ArrayList<Commande>(c.getCommandes()); 

    for(Paiement i : c.getPaiements()){ 
     pc = new Commande(); 
     pc.setClient(c); 
     pc.setDate(i.getDate()); 
     pc.setMethode(i.getMethode()); 
     pc.setPayee(i.getPrice()); 
     commandes.add(pc); 
    }    

    Collections.sort(commandes); 

ich will sort diese Aufgabe (commande) basierend auf dem Datumsfeld also hier ist mein Objekt

public class Commande implements Comparable<Commande> { 
    // other fields 
    @DateTimeFormat(pattern="yyyy-MM-dd") 
    LocalDate date; 
    @Override 
    public int compareTo(Commande c) { 
     return date.compareTo(c.getDate()); 
    }   
} 

das Problem ist, dass die Objekte o c.getCommandes() und das Objekt i erstellen und in der for-Schleife hinzufügen Art sind abtrennbar von sortiert

enter image description here

ich weiß nicht, was ich hier fehlt, irgendwelche Vorschläge Dank im Voraus

+0

Wie werden Sie den Inhalt dieser Screenshot zu bekommen? Wie verhält es sich mit der 'commandes' Liste und der' c.getCommandes() 'Liste? – Arkadiy

Antwort

4

Das liegt daran, dass die Liste nicht c.getCommandes sortiert ist, sondern eine neue Liste, die Sie erstellt:

List<Commande> commandes = new ArrayList<Commande>(c.getCommandes()); 

erstellt eine neue Liste, die nicht c.getCommandes() ist, aber ist im Grunde die Kopie davon.

Wenn Sie die c.getCommandes Liste ändern möchten, keine andere erstellen und direkt daran arbeiten:

List<Commande> commandes = c.getCommandes(); 
+0

danke für den Vorschlag, aber direkt die '.cgetCommandes()' Liste zu bearbeiten, würde das Problem nicht lösen, denn was ich sortiere ist 'Liste commandes' diese Liste und nicht' c.getCommandes() ' – ahmed

+0

Das ist Warum ist mein letztes Beispiel Ich ordne 'commandes' zu' c.getCommandes() 'zu :) Versuch es, es sollte dein Problem lösen! –

+0

ja ich habe es gerade versucht, aber leider hat es nicht funktioniert, danke für die hilfe – ahmed