Solo pochi minuti indietro ho risposto a una domanda per chiedere "Dimensioni massime possibili di HashMap in Java". Come ho sempre letto, HashMap è una struttura dati espandibile. La sua dimensione è limitata solo dalla dimensione della memoria JVM. Quindi ho pensato che non ci fosse un limite rigido alle sue dimensioni e risposto di conseguenza. (Lo stesso vale per HashSet pure.)Cosa succede quando viene raggiunta la capacità massima di HashMap o HashSet?
Ma qualcuno mi ha corretto dicendo che dal momento che il size() metodo restituisce un HashMap int, non v'è un limite alla sua dimensione. Un punto perfettamente corretto. Ho appena provato a testarlo sul mio locale ma non è riuscito, ho bisogno di più di 8 GB di memoria per inserire più di 2.147.483.647 numeri interi in HashMap, che non ho.
Le mie domande erano:
- Cosa succede quando cerchiamo di inserire 2,147,483,647 + 1 elemento nel HashMap/HashSet?
- C'è un errore generato?
- Se sì, quale errore? In caso contrario, cosa succede a HashMap/HashSet, i suoi elementi già esistenti e il nuovo elemento?
Se qualcuno ha la fortuna di accedere a una macchina con diciamo 16 GB di memoria, è possibile provarlo praticamente. :)
Appartiene a MapOverflow.com –
Non hai bisogno di 16 GB di RAM. Basta avere una versione a 64 bit di Windows e creare un file di paging per il resto da testare. – Mehrdad
Anche il mio Windows è a 32 bit :( – Bhushan