Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26

Discussione: compareto

  1. #1

    compareto

    salve ragazzi....ho alcuni dubbi, e quindi...alcuni problemi per quanto riguarda il metodo compareto da utilizzare con una classe person dove creo un array di stringhe, da ordinare in ordine di nome........se qualcuno gentilmente puo aiutarmi a togliermi qualke dubbio ne sarei veramente grato...sono giorni ke c sto su.....grazie!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: compareto

    Originariamente inviato da Leon90tps
    salve ragazzi....ho alcuni dubbi, e quindi...alcuni problemi per quanto riguarda il metodo compareto da utilizzare con una classe person dove creo un array di stringhe, da ordinare in ordine di nome........se qualcuno gentilmente puo aiutarmi a togliermi qualke dubbio ne sarei veramente grato...sono giorni ke c sto su.....grazie!!!
    Quale è il dubbio preciso? compareTo() è della interfaccia Comparable. Questa interfaccia va implementata nella classe degli oggetti da comparare.
    Il compareTo() riceve un altro oggetto e deve restituire un valore negativo, zero o positivo per indicare se l'oggetto this (quello su cui è stato invocato il compareTo() ) è rispettivamente minore, uguale o maggiore dell'altro oggetto.

    Ovviamente il criterio di comparazione (quali campi degli oggetti comparare e come) lo stabilisci tu.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    compareto

    eh ed è proprio quello il problema nn riesco a capire come strutturare il metodo compareto....come confrontare l'array di dieci nomi...
    se mi puoi fare qualke esempio te ne sarei grato.....!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: compareto

    Originariamente inviato da Leon90tps
    eh ed è proprio quello il problema nn riesco a capire come strutturare il metodo compareto....come confrontare l'array di dieci nomi...
    Esempio completo sia con Comparable che Comparator.

    codice:
    import java.util.*;
    
    public class ProvaOrdinamentoLibri {
        public static void main(String[] args) {
            Libro[] libri = {
                new Libro("The Definitive Guide to Java Swing, Third Edition", 2005),
                new Libro("Effective Java, 2nd Edition", 2008),
                new Libro("Java Concurrency in Practice", 2006),
                new Libro("Effective Enterprise Java", 2004)
            };
    
            // Ordina i libri per titolo in senso ascendente
            Arrays.sort(libri);   // Usa Comparable (implementato negli oggetti)
    
            for (Libro l : libri) {
                System.out.println(l);
            }
    
            System.out.println("-----");
    
            // Ordina i libri per anno di pubblicazione in senso decrescente (dal più recente)
            Arrays.sort(libri, new LibroPiuRecenteComparator());   // Usa Comparator specifico esterno
    
            for (Libro l : libri) {
                System.out.println(l);
            }
        }
    }
    
    class Libro implements Comparable<Libro> {
        private String titolo;
        private int annoPubblicazione;
    
        public Libro(String titolo, int annoPubblicazione) {
            this.titolo = titolo;
            this.annoPubblicazione = annoPubblicazione;
        }
    
        public String getTitolo() {
            return titolo;
        }
    
        public int getAnnoPubblicazione() {
            return annoPubblicazione;
        }
    
        public String toString() {
            return titolo + ", " + annoPubblicazione;
        }
    
        public int compareTo(Libro altroLibro) {
            // Il titolo è String e String è Comparable, quindi ha compareTo()
            return getTitolo().compareTo(altroLibro.getTitolo());
        }
    }
    
    class LibroPiuRecenteComparator implements Comparator<Libro> {
        public int compare(Libro libro1, Libro libro2) {
            int anno1 = libro1.getAnnoPubblicazione();
            int anno2 = libro2.getAnnoPubblicazione();
            return anno1 > anno2 ? -1 : anno1 < anno2 ? +1 : 0;
        }
    }
    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 2007
    Messaggi
    17
    Ciao,
    se devi ordinare un array di string puoi tranquillamente utilizzare la classe java.util.Arrays in questo modo:

    Arrays.sort(tuoArray, String.CASE_INSENSITIVE_ORDER);

  6. #6
    e praticamente del codice sorgente questo è quello ke ho scritto io....

    public class Persone implements Comparable
    {
    public Persone (String[] anArray)
    {
    lista = anArray;
    }
    public int compareTo(Object oggetto)
    {
    Persone nome = (Persone) oggetto;
    è questo metodo ke nn so come fare...!
    come strutturare l'if visto ke si tratta di un array di stringhe e nn di
    interi....!

    }
    }

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Leon90tps
    e praticamente del codice sorgente questo è quello ke ho scritto io....
    No, qui alt! O non ho capito io cosa vuoi fare ..... o non hai capito tu il concetto di Comparable/Comparator.
    Con queste interfacce tu puoi comparare 2 oggetti. Oggetti che possono avere N proprietà, ovviamente. Ma nel compareTo/compare stabilisci tu quali proprietà e con quale criterio compararle.

    Dal codice sopra risulta che Persone contiene un array di String. Tu con compareTo non compari tra stringhe in questo array!!! No. Tu dovresti comparare tra 2 oggetti Persone, ognuno che ha il suo array.

    Quindi es.
    primo oggetto Persone contiene { "pippo", "paperino" }
    secondo oggetto Persone contiene { "topolino", "minnie" }

    E che senso avrebbe? Quale sarebbe insomma il significato di comparare il primo oggetto Persone con il secondo oggetto Persone??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    allora per rendere meglio la cosa, t scrivo direttamente la traccia dell'esercizio........
    scrivete una classe Person che realizzi l'interfaccia Comparable, confrontando persone in base al loro nome. Chiedete all'utente di inserire dieci nomi e generate dieci oggetti di tipo Person. Usando il metodo compareTo, determinate la prima e l'ultima persona dell'insieme, e stampatela...
    scusami m ero confuso io sulla traccia m ricordavo male, dato ke sto facendo un casino di esercizi, m ero convinto ke fosse un array di stringhe contenenti dieci nomi da ordinare, invece nn lo è, si tratta di 10 oggetti distinti...!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Leon90tps
    ero convinto ke fosse un array di stringhe contenenti dieci nomi da ordinare, invece nn lo è, si tratta di 10 oggetti distinti...!
    Appunto. 10 oggetti Person distinti ognuno con una proprietà "nome" ha senso.

    E se hai visto prima, ho postato un esempio completo con una classe Libro che ha 2 proprietà. Quindi non hai capito l'esempio??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    scusa ma tu nn hai creto un array in quel esempio??.... cmq sia io ho creato i 10 oggetti con un unica proprietà, ora m manca di creare il metodo compareto, e un altra cosa, io nn devo utilizzare il metodo sort della classe array, ma devo ordinarlo tramite mergesort...!ovvero l'ordinamento per fusione...!

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.