У меня возник вопрос из интервью.HashMap - содержит и получать методы не должны использоваться вместе
Я был дан массив символов, как это:
char[] characters = {'u', 'a', 'u', 'i', 'o', 'f', 'u'};
мне нужно, чтобы получить различные символы и отсчеты каждого персонажа:
u = 3
a = 1
i = 1
o = 1
f = 1
Так что я ответил на Java с помощью следующего кода:
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
int i = 1;
for (char c : characters) {
if (map.containsKey(c)) {
int val = map.get(c);
map.put(c, ++val);
} else map.put(c, i);
}
Интервьюер был архитектором решений. Он спросил меня, почему я использовал методы и get()
и отметил, что использовать оба метода было излишним. В чем его смысл? Что я здесь делал неправильно? Изменит ли мой код проблему с производительностью и т. Д.?
Метод get возвращает null, если в HashMap нет такого ключа, поэтому вы можете напрямую его вызвать и проверить результат этого, а не иметь дополнительный вызов функции, в этом случае содержитKey. Это, по крайней мере, мои 2 цента по этой проблеме. – mmvsbg
Если вы уже знаете, какой ключ вы ищете, то зачем вам снова вводить ключ? –
Что я вижу, вы можете полностью удалить переменную 'i', поскольку она является постоянной во время цикла. –