Poiché sto lavorando sulla complessità del tempo, ho cercato nella libreria di Oracle oracle per la complessità temporale di alcuni metodi standard utilizzati su elenchi, mappe e classi. (Più precisamente, ArrayList, HashSet e HashMap)Complessità del tempo dei metodi HashMap
Ora, se si guarda al HashMap javadoc page, hanno veramente solo parlano dei metodi get()
e put()
.
i metodi che ho ancora bisogno di sapere sono:
remove(Object o)
size()
values()
penso che remove()
sarà la stessa complessità get()
, O(1)
, assumendo che non hanno un HashMap gigante con uguali codici hash, ecc ecc ..
Per size()
mi piacerebbe anche assumere O(1)
, dal momento che un HashSet, che ha anche alcun ordine, ha un metodo size()
complessità O(1)
.
Quello non ho idea di è values()
- non sono sicuro se questo metodo sarà solo in qualche modo "copia" la HashMap, dando una complessità temporale di O(1)
, o se dovrà iterare il HashMap, rendendo la complessità pari alla quantità di elementi memorizzati in HashMap.
Grazie.
Btw come potrebbe 'values ()' dare 'O (1)' se anche se solo in qualche modo " copia "la HashMap? – Pacerier
a proposito, il tuo link è rotto – Hengameh
Potresti per favore citare l'esatta complessità (media o peggiore) che stai cercando nella tua domanda? La complessità di remove() sarà diversa di conseguenza, come giustamente indicato da @JavaGuy – Dinesh