Capisco HashSet
in base a HashMap
, poiché sono piuttosto simili. Rende il codice più flessibile e riduce al minimo lo sforzo di implementazione. Tuttavia, una variabile di riferimento in HashSet Entry
sembra essere inutile per me se la classe proibisce l'elemento null
, quindi l'intera Entry non ha senso. Nonostante ciò, un Entry
accetta 24 byte di memoria/elemento, mentre un singolo array con gli elementi dell'insieme richiederebbe solo 4 byte/elemento se le mie cifre sono corrette. (a parte l'intestazione dell'array)Prestazioni Java HashSet
Se la mia argomentazione è corretta, i vantaggi superano davvero questo risultato?
(se sbaglio, avrei imparato da esso aswell)
Un singolo array non sarebbe un HashSet. Come avresti O (1) contains() con un array semplice? –
@JBNizet Il rilevamento lineare (o l'indirizzamento generalmente aperto) funziona con un solo array. Sono anche curioso di sapere quale sia stata la decisione di progettazione, ma non sono sicuro se troveremo l'autore qui per segnalare ;-) –
@JBNizet Puoi facilmente implementare diversi tipi di tabelle hash in un array, ad esempio cuculo, lineare, ecc. ... EDIT: lineare non ha O (1) contiene(), ma cucù fa –