Ho un compito, in cui devo passare attraverso diversi miliardi di stringhe e controllare, se ognuno di questi è unico. Tutte le linee stesse non possono essere ospitate all'interno della memoria RAM del PC. Inoltre, è probabile che il numero di righe sia maggiore di Integer.MAX_VALUE.Gestione di elenchi di stringhe di grandi dimensioni in java
Suppongo che il modo migliore per gestire questa quantità di dati sia di inserire codici hash di ciascuna stringa in una sorta di HashTable.
Così, qui sono le mie domande:
- Cosa devo usare al posto di
String.hashCode()
? (il valore restituito è int, ma probabilmente ho bisogno di molto tempo) - Qual è il modo/framework più veloce per lavorare con elenchi di queste dimensioni? Quello di cui ho maggiormente bisogno è la possibilità di controllare rapidamente se l'elenco contiene un elemento oppure no
Perché non sfruttare la potenza di un database? Deve essere fatto rigorosamente in Java? –
Se è un'opzione, l'idea del "database" è ottima. Inoltre, dovrai considerare i due "casi peggiori": a) dove ogni stringa è unica, a b) dove ogni stringa è identica. Qualunque sia la soluzione, hai la capacità del disco/RAM e il tempo/potenza di calcolo per gestire entrambi i casi? – paulsm4
Quanto è grande il numero di linee? Conosco più di MAX_VALUE - più grande di 32 * MAX_VALUE? Più grande di...? –