Временная сложность HashMap / HashTable в случае строковых элементов - PullRequest
0 голосов
/ 21 июня 2020

Мы выполняем l oop n раз, где n - длина слов. В случае, если хэш-код всех строк одинаков, и все строки отличаются только последними несколькими символами или все строки в массиве слов одинаковы, метод equals должен сравнить почти все символы, чтобы проверить их равенство 2 строк. Если k - длина самой длинной / средней строки, какова будет сложность кода ниже? Я предполагаю O (nlogk), если хэш-карта внутренне реализована с использованием сбалансированного двоичного дерева.

String[] words = {"cccccb", "cccccb", "ccccbc"};
Map<String, Integer> count = new HashMap();
for (String word: words) {
    count.put(word, count.getOrDefault(word, 0) + 1);
}
...