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

    [Java e non solo] Confronto tra array

    La situazione è la seguente:

    Ho un array di stringhe, chiamato arrayPartenza con 18.000 elementi circa, così definito:

    String[] arrayPartenza = new String [18000];

    Ho un numero di altri elementi, circa 100.000 che posso mettere a mia scelta in un qualsiasi oggetto (quindi non necessariamente un array classico, ma anche un ArrayList, una Map, o qualsiasi altro), che possiamo chiamare arrayListaNera.


    Devo creare un terzo oggetto, chiamato arrayDestinazione, così definito:

    String[] arrayDestinaizone = new String [18000];

    che contenga le sole stringhe di arrayPartenza, che non siano già contenute in arrayListaNera.

    Naturalmente ciò può essere fatto in molti modi, e tutti piuttosto semplici. Ma il mio problema è trovare il modo più veloce (o uno dei modi più veloci) per farlo.
    Non posso per ognuno dei 18.000 elementi di arrayPartenza, controllare se è presente in ognuno dei 100.000 elementi di arrayListaNera: ci impiegherei troppo tempo.
    Ho in mente due possibili soluzioni:

    1) definire arrayListaNera come un oggetto Hashset (oggetto che non può contenere elementi dupplicati). Così ognuno dei 18.000 elementi di arrayPartenza lo aggiungo ad arrayListaNera, e se la sua dimensione aumenta (significa che in arrayListaNera non ce ne era già uno uguale) , lo metto anche in arrayDestinazione

    2) definire arraListaNera come HashMap (oggetto che accoppia ogni elemento a una chiave) in cui la chiave è la stringa, e come elemento un boolean, che vale sempre TRUE.
    Così uso ciascuno dei 18.000 elementi di arrayPartenza come chiave di arrayListaNera per vedere se trovo il valore TRUE, e se non lo trovo, aggiungo tale stringa ad arrayDestinazione.

    Voi avete altri suggerimenti?

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

    Moderazione

    Visto che si tratta primariamente di Java, anche nella sintassi, sposto nel forum Java.


    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

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.