Come mappare la raccolta di numeri grandi univoci su un array?

1

Ho una lista di unique id casuali a 8 byte e i nuovi id sono generati spesso. Diciamo che il numero totale di id può diventare al massimo N (diciamo 100.000). Ora, voglio mappare ognuno di questi id ad una posizione unica in una matrice di dimensione N. Qual è il modo migliore per mapparlo?

Contesto: stavo leggendo su come sistemi di messaggistica chat istantanei come facebook / skype / googlechat tengono traccia della presenza e apparentemente, mantengono solo un grande array e lo indicizzano in base all'id utente che è un id casuale unico di 8 o 16 byte .

    
posta Prabu 28.04.2016 - 05:15
fonte

1 risposta

1

A meno che non ci sia stata una funzione generatore che ha mappato tutti gli interi da 0 a 100.000 agli ID corrispondenti (che suppongo tu non sia, come hai detto che sono casuali), la tua migliore chiamata è una normale hashmap. Archiviandoli in un array piatto, altrimenti si verificherà un sacco di movimento dei dati ogni volta che si inseriscono nuovi ID.

La seconda opzione migliore è abbandonare l'idea di usare un array semplice, ma usare una struttura dati che è più adatta per inserimenti casuali, come una lista collegata. I perfezionamenti, come ad esempio il skiplist, funzionano bene anche nel tuo caso, poiché aggiungi sempre nuovi valori, ma non rimuovi.

    
risposta data 19.05.2016 - 20:53
fonte

Leggi altre domande sui tag