Поскольку я работаю над временной сложностью, я искал в библиотеке классов Java-оракула временную сложность некоторых стандартных методов, используемых в списках, картах и классах.(точнее, ArrayList, HashSet и HashMap)
Теперь, глядя на страницу javadoc HashMap , они действительно говорят только о методах get()
и put()
.
Методы, которые мне все еще нужно знать:
remove(Object o)
size()
values()
Я думаю, что remove()
будет такой же сложности, как и get()
, O(1)
, при условии, что у нас нет гигантского HashMapс равными хэш-кодами и т. д. и т. д.
Для size()
я бы также предположил O(1)
, поскольку HashSet, у которого также нет порядка, имеет метод size()
со сложностью O(1)
.
Единственное, о чем я понятия не имею, это values()
- я не уверен, будет ли этот метод просто каким-то образом «копировать» HashMap, давая временную сложность O(1)
, или если ему придетсяитерируйте HashMap, делая сложность равной количеству элементов, хранящихся в HashMap.
Спасибо.