Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    16

    aiuto Array list

    devo eliminare i duplicati di un array list
    io ho usato le funzioni indexOf e Lastindexof
    ma non riesco a capire perchè non funzioni

    codice:
    static void eliminaDuplicati(ArrayList<Integer> a) {
     for (int i = 0; i <a.size(); i++) {
     if (a.indexOf(a.get(i)) < a.lastIndexOf(a.get(i))) { 
    a.remove(a.lastIndexOf(a.get(i)));
     } 
    }
    }
    esempio
    [2, 2, 2, 2, 2, 4]
    [2, 2, 2, 2, 4]
    [2, 2, 2, 4]
    [2, 2, 4]
    [2, 2, 4]

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    "non funziona" non vuole dire nulla: non compila? eccezione a runtime? Riporta tutto...

    Ad ogni modo, ArrayList salva i dati un un normale array. Se cancelli l'elemento in posizione i, quello in posizione i+1 prenderà il suo posto e l'array diventa più corto. Mi segui?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Per ottenerne la frequenza puoi anche usare Collections.frequency(array, element). Magari puoi chiamarlo prima di rimuovere l'elemento nel modo suggerito da Alex...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    16
    si alex il problema e che questo algoritmo l'ha scritto il mio prof perchè voleva usare un solo for e queste funzioni, l'ho provato a casa perchè non ero molto convinto e ho visto che non funziona allora cercavo un modo per farlo funzionare con questa struttura

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    16
    sono riuscito a trovare una soluzione
    codice:
    static void eliminaDuplicati(ArrayList<Integer> a) {
     for (int i = 1; i <a.size(); i++) { 
    if (a.indexOf(a.get(i)) < a.lastIndexOf(a.get(i))) {
     a.remove(a.lastIndexOf(a.get(i)));
     i--; 
    } 
    } 
    }

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    @marcocsm
    I titoli delle discussioni dovrebbero essere il più precisi possibile. "Aiuto Array List" può voler dire di tutto, è troppo generico ed il Regolamento interno ne vieta, appunto, l'applicazione.

    Ho sistemato il titolo mettendone uno più chiaro (e, in fin dei conti, non era così difficile).

    In futuro cerca di scrivere titoli più significativi.

    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

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da marcocsm
    sono riuscito a trovare una soluzione
    codice:
    static void eliminaDuplicati(ArrayList<Integer> a) {
     for (int i = 1; i <a.size(); i++) { 
    if (a.indexOf(a.get(i)) < a.lastIndexOf(a.get(i))) {
     a.remove(a.lastIndexOf(a.get(i)));
     i--; 
    } 
    } 
    }
    Perché parti da i = 1?

    Comunque un consiglio: migliora l'indentazione, usa dei nomi significativi e non compattare troppo le istruzioni.

    Riscritto così non è molto più leggibile?

    codice:
    static void eliminaDuplicati(ArrayList<Integer> array)
    {
        for (int i = 0; i < array.size(); i++)
        {
            int firstIndex = array.indexOf(array.get(i));
            int lastIndex = array.lastIndexOf(array.get(i));
        
            if (firstIndex != lastIndex)
            {
                array.remove(lastIndex);
                i--;
            }
        }
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.