Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 26

Discussione: compareto

  1. #11
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Leon90tps
    scusa ma tu nn hai creto un array in quel esempio??
    Sì, ho creato un array di 4 oggetti Libro.

    Originariamente inviato da Leon90tps
    .... cmq sia io ho creato i 10 oggetti con un unica proprietà
    - Nel mio caso: N oggetti Libro da ordinare secondo la proprietà "titolo" (un String).
    - Nel tuo caso: N oggetti Person da ordinare secondo la proprietà "nome" (un String).

    Vedi differenza, a parte ovviamente i nomi, a livello concettuale? Io no.

    Originariamente inviato da Leon90tps
    ora m manca di creare il metodo compareto
    Se hai visto il compareTo() del mio Libro .....

    Originariamente inviato da Leon90tps
    e un altra cosa, io nn devo utilizzare il metodo sort della classe array, ma devo ordinarlo tramite mergesort...!ovvero l'ordinamento per fusione...!
    Quindi devi implementare tu l'algoritmo di ordinamento?? (e non usare un metodo già fatto).

    Bene, ok. Immagino farai un metodo apposito che riceve un array. Se hai visto il sort() (perlomeno quello "base") di java.util.Arrays è fatto così:

    void sort(Object[] a)

    e il metodo "sa" implicitamente che gli oggetti devono implementare Comparable (infatti fa dei cast a Comparable degli oggetti).

    Tu potresti fare un metodo che riceve un generico Object[] o più specifico es. Person[] o un pelino più ampio come Comparable[]. Cambia poco, almeno a livello concettuale.

    Il "tuo" metodo secondo il criterio dell'algoritmo scelto, farà tante comparazioni tra coppie di oggetti "sapendo" appunto che secondo Comparable deve prendere un oggetto, "vederlo" come Comparable e invocarci compareTo() passando come argomento un altro oggetto.

    E quali/quante coppie, in quale progressione ... dipende appunto dall'algoritmo scelto.

    Ora è un po' più chiaro? (spero qui di essere stato di aiuto)
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  2. #12
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    17
    devo dire che dalla tua spiegazione non si capiva cosa dovessi fare... visto che parlavi di un array con 10 stringhe da ordinare...
    cmq quotone per quanto detto da andbin.


    In alternativa potresti definire una classe Comparator<Persona> ed implementare il compareTo.
    codice:
    public class PersonaComparator implements Comparator<Persona> {
    
    	@Override
    	public int compare(Persona arg0, Persona arg1) {
    		return arg0.getNome().compareTo(arg1.getNome());
    	}
    
    }
    Successivamente utilizzando Arrays.sort(arrayPersona,new PersonaComparator()) puoi avere l'array di persone ordinate.

  3. #13
    si si fidati mi stai aiutando tantissimo...anke xk la mia prof di programmazione è come al cazzo è questo argomento c sarà all'esame e nn abbiamo fatto neanke un esercizio su questo...e infatti m sto trovando malissimo, menomale ke ora m stai dando una dritta tu...cmq dicevo, praticamente siccome devo utilizzare l'ordinamento per fusione ke lavora su gli array di creare un array di 10 oggetti, da confrontare, xo stavo pensando ke posso semplicemente completare il metodo compareto, e poi adattare il metodo merge(fusione) che in pratica è il vero metodo del mergesort ke ordina l'array con il compareto, ed ogni volta cosi si confrontano gli oggetti e vengono riordinati nell'array direttamente dal merge.....ke ne dici si puo fare vero?

  4. #14
    ehi ANDBIN....ho provato a fare come hai detto tu...ma nn mi esce....m da dei risultati strani se puoi aiutarmi....grazie...

  5. #15
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Leon90tps
    ehi ANDBIN....ho provato a fare come hai detto tu...ma nn mi esce....m da dei risultati strani se puoi aiutarmi....grazie...
    Allora per cominciare posta il codice di Person. Però questo è solo un "lato" (quello più semplice) dell'ordinamento. Bisognerebbe anche vedere l'algoritmo di ordinamento che sfrutta Comparable.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #16
    ok questo è il codice di Persone, codice sorgente.......

    public class Persone implements Comparable<Persone>
    {
    private String[] lista;
    private String nome;
    public Persone (String[] anArray)
    {
    lista = anArray;
    }
    public Persone(String anome)
    {
    nome = anome;
    }
    public String getNome()
    {
    return nome;
    }
    public int compareTo(Persone oggetto)
    {
    Persone nome = (Persone) oggetto;
    return getNome().compareTo(oggetto.getNome());
    }
    }

    mentre questo è il tester.....

    import java.util.Arrays;

    public class PersoneTester
    {
    public static void main(String[] args)
    {

    Persone[] persona = {new Persone("Leonardo"), new Persone("Annalisa"), new Persone("Giuseppe"), new Persone("Cisco"), new Persone("Gabriele"),
    new Persone("Sergio"), new Persone("Mario"), new Persone("Roberto"), new Persone("Annunziata"), new Persone("Antonio")};

    Arrays.sort(persona);
    for (Persone l : persona)
    {
    System.out.println(l);
    }
    }

    }


    nn ho voluto modificare più d tanto rispetto a quello ke m hai detto tu...xk voglio prima cercare di capire bene come funziona e poi cominciare a modificare anke l'algoritmo di ordinamento.....

  7. #17
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Leon90tps
    ok questo è il codice di Persone
    Continuo a non capire perché lo chiami Persone. "Modella" solo 1 persona ... no? O ho capito male io?

    codice:
        public int compareTo(Persone oggetto)
        {
        	Persone nome = (Persone) oggetto;
        	return getNome().compareTo(oggetto.getNome());
        }
    Non vedo a cosa serva quella variabile 'nome' e il cast ... visto che hai già un Persone. Comunque la comparazione dei due nomi non fa una piega. Ok.

    }

    Originariamente inviato da Leon90tps
    mentre questo è il tester.....
    Corretto, almeno per quanto riguarda l'array, la chiamata a sort() e il ciclo.
    Ma se vuoi passare a println() direttamente un oggetto Persone e ottenere in output qualcosa di "utile", in Persone devi fare l'override di toString() per fornire una rappresentazione testuale dell'oggetto. Altrimenti nel ciclo stampa l.getNome()
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #18
    ah ok.... ma sinceramente nn ho capito bene cosa serve quel ciclo for, cn quella variabile l......! li m sn perso e penso proprio ke sia li il problema...e poi anke il metodo toString nn m è molto kiaro....

  9. #19
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Leon90tps
    ah ok.... ma sinceramente nn ho capito bene cosa serve quel ciclo for, cn quella variabile l......!
    Semplicemente è il "for-each", disponibile da Java 5. Semplifica la iterazione. Tutto qui.

    Originariamente inviato da Leon90tps
    poi anke il metodo toString nn m è molto kiaro....
    Una classe può definire un metodo:

    public String toString()

    che diventa un override di quello in Object. E serve per fornire una rappresentazione testuale dell'oggetto.

    Se passi a println() un oggetto, println() invoca toString() sull'oggetto per ottenere un qualcosa di testuale "utile" da stampare.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  10. #20
    ...quindi in poke parole io mettendo solo system.out.println(l) stampo un qualcosa ke dovrebbe aver senso, ma solo con il metodo toString si puo stampare qualcosa di "utile".....capito ma quindi senza ke sbaglio un altra volta per poi kiedere ancora qualcos altro, ora ke hai visto tutto il codice cos'è ke dovrei aggiungere o modificare precisamente??

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 © 2026 vBulletin Solutions, Inc. All rights reserved.