Z Javadocs z HashSet:Co koszt iteracji w HashSet zależy również od pojemności mapy podkładu?
Klasa ta oferuje stałą wydajność czasową dla podstawowych operacji (dodawać, usuwać, zawiera i rozmiar), przy założeniu, że funkcja hash rozprasza elementów prawidłowo wśród wiader. Iteracja w tym zestawie wymaga czasu proporcjonalnego do sumy rozmiaru instancji HashSet o numerze (liczba elementów) plus "pojemność" instancji klasy HashMap (liczba segmentów). Tak więc, jest to bardzo ważne, aby nie ustawić początkową zdolność zbyt wysoki (lub współczynnika obciążenia zbyt niska) jeśli iteracja wydajność jest ważna
Dlaczego iteracja zajmuje czas proporcjonalny do sumy (liczbę elementów w zestawie + wielkość mapy podkładu), a nie tylko liczbę elementów w samym zestawie?
.
Jak iteracyjne nad wszystkimi elementami bez również iteracji nad wszystkimi pustymi wiadrami? – sepp2k
Powiązane: http://stackoverflow.com/a/11903357/829571 – assylias
Możesz również [sprawdzić kod] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/ 7-b147/java/util/HashSet.java? Av = f # 168) i przejdź do dołu, aby zobaczyć, co dzieje się pod maską. – assylias