Невозможно достичь с помощью hasmap из-за функции хеширования.Это должно было бы присвоить хэш "John*"
и хэш "John Smith"
и др.то же самое значение.
Вы можете сделать это с TreeMap, если вы напишите свой собственный класс WildcardString
, упаковывающий String, и реализуете compareTo
таким образом, что "John*".compareTo("John Smith")
возвращает 0. Вы можете сделатьэто с помощью регулярных выражений, таких как другие ответы уже указали.
Видя, что вы хотите список совпадений карточек виджетов , вы всегда можете удалить записи, как только найдетеитерация TreeMap.get()
.Не забудьте поставить ключи обратно после того, как закончите с именем.
Это просто возможный способ добиться этого.Имея менее 200 элементов, вы будете хорошо выполнять итерации.
ОБНОВЛЕНИЕ: Чтобы правильно навести порядок на TreeSet
, вы можете различить случай сравнения двух WildcardString
s (то естьэто сравнение между ключами) и сравнение WildcardString
с String
(сравнение ключа со значением поиска).