Ich verstehe HashSet
basierend auf HashMap
, da sie ziemlich ähnlich sind. Es macht den Code flexibler und minimiert den Implementierungsaufwand. Allerdings scheint eine Referenzvariable im HashSet Entry
für mich unnötig zu sein, wenn die Klasse null
Element verbietet, daher macht der ganze Eintrag keinen Sinn. Trotz dieser Tatsache nimmt ein Entry
24 Byte Speicher/Element, während ein einzelnes Array mit den Elementen des Satzes nur 4 Byte/Element nehmen würde, wenn meine Zahlen korrekt sind. (abgesehen von der Kopfzeile des Arrays)Java HashSet Leistung
Wenn mein Argument richtig ist, sind die Vorteile wirklich übergewichtig diese Leistung?
(wenn ich falsch bin, ich von ihm als gut lernen würde)
Ein einzelnes Array wäre kein HashSet. Wie hättest du O (1) contains() mit einem einfachen Array? –
@JBNizet lineares Sondieren (oder allgemein offene Adressierung) funktioniert mit nur einem einzigen Array. Ich bin auch neugierig, was die Designentscheidung war, aber ich bin nicht sicher, ob wir den Autor hier finden, um zu berichten ;-) –
@JBNizet Sie können leicht verschiedene Arten von Hashtabellen in einem Array implementieren, dh Kuckuck, linear, etc ... EDIT: linear hat nicht O (1) enthält(), aber Kuckuck tut –