Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Ordinamento ArrayList

  1. #1

    Ordinamento ArrayList

    Ciao, devo creare un programma ke faccia da rubrica telefonica..a tal scopo ho creato due classi..una contenente i dati da salvare (nome,numero,note) e una ke inserisce in un arrayList ciascuna istanza della classe precedentemente spiegata. Il problema è ke nn sono riscito a trovare una funzione ke riesca ad ordinare l'agenda in ordine alfabetico, ossia prendendo come chiave il campo nome della classe Record ed ordinando l'agenda in base al nome


    Classe Rubrica
    codice:
    public class Rubrica
    {
        
        
        
        public void nuovo(String nome, int numero, String note)
        {
            Record record = new Record();
            record.inserisciNuovo(nome,numero,note);
            lista.add(record);
        }
    
    
        public void ordina()
        {
            Collections.sort(lista);
        } 
        
        
        public void stampa()
        {
            
            System.out.println("\tRubrica telefonica:");
            System.out.println("\tA->Z\n\n");
            
            Iterator i = lista.iterator();
            
            while(i.hasNext())
            {
                Record record = (Record)i.next();
                System.out.println("\tNome: " + record.nome + "\tNumero: " + record.numero + "Note: " + record.varie);
                
            }
        }
         
        public static void main(String[] args)
            {
                Lista lista = new Lista();
            }
    }
    Classe Record
    codice:
    public class Record
    {
        public String nome;
        public int numero;
        public String varie;
        
        public void inserisciNuovo(String nome, int numero, String varie)
        {
            this.nome=nome;
            this.numero=numero;
            this.varie=varie;
        }
      
    }

    Io ho insertio la funzione ordina() ma so ke non funziona, se potete illuminarmi...
    grazie

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    la lista è di oggetti record, giusto?...se usi il metodo sort di java ordina in base all'id dell'oggetto e non in base ai campi dell'oggetto...dovresti crearti tu un tuo metodo sort per odinare gli elementi in base a record.nome....

    inoltre, perchè fa inserisciNuovo e non crei il costruttore di Record? così ti basterà fare
    Record max = new Record("Max", 0564894, "");
    tanto non credo ti serva avere un record vuoto

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

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

    Re: Ordinamento ArrayList

    Originariamente inviato da VladTepes
    Io ho insertio la funzione ordina() ma so ke non funziona, se potete illuminarmi...
    Se tu hai una lista di oggetti di una TuaClasse e vuoi che l'ordinamento sia basato su una o più proprietà della tua classe, puoi usare sort() di Collections ma a questo punto devi prendere in considerazione la interfaccia Comparable o Comparator.

    Ci sono 2 versioni di sort(), una prende solo la lista (e in tal caso gli oggetti devono implementare la interfaccia Comparable) e l'altra prende lista + Comparator.

    La discussione su questo argomento sarebbe un po' lunga, in breve: la interfaccia Comparable va implementata nella classe dei tuoi oggetti da comparare mentre Comparator va implementato generalmente in una classe separata da quella dei tuoi oggetti. Documentati su queste due interfacce, se hai dubbi, chiedi pure.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.