Dalle JavaDocs di HashSet:Quali costi di iterazione su un hashset dipendono anche dalla capacità della mappa di backup?
Questa classe offre prestazioni costante di tempo per le operazioni di base (aggiungere, rimuovere, contiene e dimensione), assumendo la funzione hash disperde elementi correttamente tra i secchi. L'iterazione su questo set richiede tempo proporzionale alla somma delle dimensioni dell'istanza di HashSet (il numero di elementi) più la "capacità" dell'istanza di backup HashMap (il numero di bucket). Pertanto, è molto importante non impostare capacità iniziale troppo elevata (o il fattore di carico troppo bassa) se iterazione prestazioni è importante
Perché iterazione richiede tempo proporzionale alla somma (numero di elementi in serie + capacità della mappa di supporto) e non solo al numero di elementi nel set stesso?
.
Come ti iterare tutti gli elementi, senza anche iterare su tutti i secchi vuoti? – sepp2k
Correlati: http://stackoverflow.com/a/11903357/829571 – assylias
Puoi anche [controllare il codice] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/ 7-b147/java/util/HashSet.java? Av = f # 168) e approfondisci per vedere cosa succede sotto il cofano. – assylias