Rozumiem, HashSet
na podstawie HashMap
, ponieważ są one bardzo podobne. Dzięki temu kod staje się bardziej elastyczny i minimalizuje nakłady na wdrożenie. Jednak jedna zmienna referencyjna w HashSet's Entry
wydaje mi się niepotrzebna, jeśli klasa zabrania elementu null
, dlatego cały wpis nie ma sensu. Pomimo tego, Entry
zajmuje 24-bajtową pamięć/element, podczas gdy pojedyncza tablica z elementami zestawu zajmuje tylko 4 bajty/element, jeśli moje dane są poprawne. (poza nagłówkiem tablicy)Wydajność Java HashSet
Jeśli mój argument jest poprawny, czy zalety naprawdę nadwątlają ten wynik?
(jeśli się mylę, chciałbym dowiedzieć się od niego aswell)
Pojedyncza tablica nie byłaby HashSet. W jaki sposób miałbyś O (1) zawiera() z prostą tablicą? –
Atestowanie liniowe @JBNizet (lub ogólnie otwarte adresowanie) działa tylko z jedną tablicą. Ciekawi mnie także decyzja dotycząca projektu, ale nie jestem pewien, czy znajdziemy tu autora raportu ;-) –
@JBNizet Możesz łatwo zaimplementować kilka rodzajów tablic haszujących w tablicy, np. Kukułkę, linijkę itp. ... EDIT: linear nie ma O (1) zawiera(), ale kukułka ma –