Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    103

    [java] ordinamento di oggetti

    qualcuno saprebbe indicarmi cosa devo usare per ordinare un vettore di oggetti secondo l'ordine di un suo campo di tipo intero.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Se il vettore e' un vector o comunque una struttura dati analoga puoi usare Collections.sort(vettore);
    e fare implementare comparable ai tuoi oggettini.
    Ci sono parecchi thread passati che discutono argomenti analoghi.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    103
    OK faccio una ricerca, però spero di trovare qlc esempio pratico perchè teoricamente ne avevo già un'idea.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da uranya
    OK faccio una ricerca, però spero di trovare qlc esempio pratico perchè teoricamente ne avevo già un'idea.
    codice:
    class Persona implements Comparable<Persona> {
        private String nome;
        private String cognome;
    
        public Persona (String nome, String cognome) {
            this.nome = nome;
            this.cognome = cognome;
        }
    
        public String getNome () {
            return nome;
        }
    
        public String getCognome () {
            return cognome;
        }
    
        public int compareTo (Persona p) {
            int r = getCognome ().compareTo (p.getCognome ());
            return r != 0 ? r : getNome ().compareTo (p.getNome ());
        }
    }
    compareTo compara prima il cognome e, se uguale, poi il nome.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    103
    scusa l'ignoranza ma dagli esempi che ho visto non sono riuscita a capirci granchè..

    i miei oggetti hanno un campo long "tempoImpiegato". Io vorrei implementare un metodo

    public Oggetto[] ordina(Oggetto[] oggetti)

    che avendo come parametro l'array di oggetti non ordinati mi restituisce l'array ordinato, si può fare?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da uranya
    i miei oggetti hanno un campo long "tempoImpiegato".
    Devi solo stabilire se usare un Comparable o un Comparator.
    Comparable va implementato nella classe dell'oggetto e serve per stabilire quello che si chiama "natural order" (l'ordine naturale dell'oggetto). Pertanto ne puoi avere 1 solo.
    Puoi invece creare N altre classi il cui unico scopo è quello di implementare Comparator per fare un qualunque altro tipo di ordine.

    Originariamente inviato da uranya
    Io vorrei implementare un metodo

    public Oggetto[] ordina(Oggetto[] oggetti)
    Lo fa già Arrays.sort(), vedi documentazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    103
    scusa ma di teoria in merito ne sto leggendo tanta... ti ho detto cosa vorrei fare.
    Voglio ordinare i miei oggetti secondo uno dei campi che è di tipo long (quindi un tipo primitivo). Il problema è che non ho capito praticamente come devo fare.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da uranya
    scusa ma di teoria in merito ne sto leggendo tanta... ti ho detto cosa vorrei fare.
    Voglio ordinare i miei oggetti secondo uno dei campi che è di tipo long (quindi un tipo primitivo). Il problema è che non ho capito praticamente come devo fare.
    Ok, ammettiamo che i tuoi oggetti vadano ordinati in ordine ascendente secondo il valore di quel campo long. E supponiamo che questo sia il "natural order" del tuo oggetto, quindi puoi implementare Comparable.


    codice:
    public class TuaClasse implements Comparable<TuaClasse>
    {
        private long tempoImpiegato;
    
        // .....
    
        public int compareTo (TuaClasse obj)
        {
            return tempoImpiegato > obj.tempoImpiegato ? +1 :
                   tempoImpiegato < obj.tempoImpiegato ? -1 : 0;
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    103
    raga scusate ma ho trovato una soluzione forse banale, ma che mi è servita allo scopo.
    Ho usato una lista aggiungendo gli elementi ma mano che raggiungevano un determinato scopo, e la lista è risultata così, direttamente ordinata.
    So che ho aggirato il problema ma tutte ste chiacchiere sulle collection mi hanno fatto venire il mal di testa...

    purtroppo sto un po a zero con java e ho bisogno di esempi pratici, partendo da un problema semplice e vedendo la sua soluzione con un codice ben scritto.

    Perciò grazie della collaborazione.... magari ci vorrebbe un bel tutorial passo passo...beh forse è chiedere troppo!!

    Ciao

    Alla prox

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.