2013-05-25 29 views

risposta

23

Si desidera utilizzare Collections.sort in combinazione con un numero personalizzato Comparator.

Collections.sort(list, new Comparator<Zombie>() { 
    @Override 
    public int compare(Zombie z1, Zombie z2) { 
     if (z1.x() > z2.x()) 
      return 1; 
     if (z1.x() < z2.x()) 
      return -1; 
     return 0; 
    } 
}); 

In sostanza, una Comparator è una chiave che indica come un elenco dovrebbe essere ordinato tramite il suo metodo compare. Con il Comparator sopra, consideriamo z1 essere maggiore di z2 se z1 ha il valore maggiore x (e mostriamo ciò restituendo 1). Sulla base di questo, ordiniamo list.

+0

Grazie per questa spiegazione e la risposta, ma si può andare più in profondità il significato di tutto ciò? Se potessi spiegarmi ogni riga di codice e spiegare cosa sta succedendo esattamente, sarebbe molto utile. – user2414341

+0

@ user2414341 Fatto. –

+0

Così incredibilmente brutto, ma funziona. Questo sembra l'unico modo per fare questo tipo di ordinamento (risposta simile su tutto il web). –

3

usando Java 8 fare questo:

zombie.sort((Zombie z1, Zombie z2) -> { 
    if (z1.x() > z2.x()) 
    return 1; 
    if (z1.x() < z2.x()) 
    return -1; 
    return 0; 
}); 

interfaccia List ora supporta il metodo di ordinamento direttamente

Problemi correlati