Я изначально написал ArrayList
и сохранил уникальные значения (имена пользователей, т.е. Strings
). Позднее мне понадобилось использовать ArrayList
для поиска, если пользователь существовал в нем. Это O(n)
для поиска.
Мой технический руководитель хотел, чтобы я изменил его на HashMap
и сохранил имена пользователей как ключи в массиве, а значения пустые Strings
.
Итак, в Java -
hashmap.put("johndoe","");
Я вижу, существует ли этот пользователь позже, выполнив -
hashmap.containsKey("johndoe");
Это O(1)
правильно?
Мой руководитель сказал, что это был более эффективный способ сделать это, и это имело смысл для меня, но мне показалось, что это немного пошло, чтобы поместить null/empty в качестве значений в hashmap и сохранить в нем элементы как ключи.
Мой вопрос в том, хороший подход? Эффективность превосходит ArrayList#contains
или поиск массива в целом. Оно работает.
Мое беспокойство заключается в том, что я не видел, чтобы кто-то еще делал это после обыска. Возможно, я не вижу очевидной проблемы, но я не вижу ее.