Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA]: eliminare duplicati da una lista

    ciao, ho necessità di eliminare i duplicati da una lista:
    c'è qualche metodo già pronto in java? la lista contiene stringhe.

    io mi sono fatto questo metodo: c'è qualcosa di più veloce?
    codice:
    public void eliminaDupicati()
    {
    	for (int i = 0 ; i < lista.size() ; i++)
    	{
    		String curr=(String) lista.get(i);
    		for (int j=i+1 ; j< lista.size() ; j++)
    		{
    			String tmp=(String)lista.get(j);
    			if (curr.equals(tmp))
    				lista.remove(j);
    		}
    	}
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Esiste l'interfaccia Set (classi come TreeSet la implementano). Essendo degli insiemi (Set = Insieme) non possono contenere elementi duplicati, quindi qualsiasi inserimento di un elemeno già esistente viene "ignorato". In questo modo viene garantito che l'oggetto sarà una collezione di elementi non ripetuti.

    A questo punto puoi utilizzare una di queste classi per cancellare in modo lineare tutti gli elementi doppi di una lista.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ok, nel caso in cui non dovesse funzionare bene la mia, provo con l'interfaccia Set.
    Dico così perchè non l'ho mai usata e dovrei studiarmela un po' prima ed avrei una certa urgenza del lavoro di cui mi sto occupando...
    solo un piccolo bug riscontrato nella mia versione fino ad ora.
    la nuova versione diventa:
    codice:
    public void eliminaDupicati()
    {
    	for (int i = 0 ; i < lista.size() ; i++)
    	{
    		String curr=(String) lista.get(i);
    		for (int j=i+1 ; j< lista.size() ; j++)
    		{
    			String tmp=(String)lista.get(j);
    			if (curr.equals(tmp))
                                          {
    				lista.remove(j);
                                                       j--; //aggiunto a questa versione
                                          }
    		}
    	}
    }
    ciao e grazie

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.