Я уважаю и люблю хеш-таблицы :), но даже сбалансированное бинарное дерево подойдет для вашего приложения телефонной книги, если в худшем случае сложность логарифмическая, и вам не нужно иметь хорошие хэш-функции, коллизии и т. Д., Которые больше подходят для огромных объемы данных.
Когда я говорю об огромных данных, я имею в виду нечто, связанное с хранением. Каждый раз, когда вы заполняете все сегменты в хэш-таблице, вам нужно будет выделить новое хранилище и заново все хэшировать. Этого можно избежать, если заранее знать размер данных. Сбалансированные деревья не позволят вам войти в эти проблемы. При проектировании структур данных также необходимо учитывать домен, так как пример для небольших устройств имеет большое значение.