Retornar uma lista de correspondências curinga de um HashMap em java

Tenho um Hashmap que pode conter caracteres curinga (*) na Strin

Por exemplo

HashMap<String, Student> students_;

pode ter John * como uma chave. Quero saber se o JohnSmith corresponde a algum elemento em students_. Pode haver várias correspondências para minha string (John *, Jo * Smith, etc). Existe alguma maneira de obter uma lista dessas correspondências no meu HashMap?

Existe outro objeto que eu poderia estar usando que não exija a iteração em todos os elementos da minha coleção ou preciso sugá-lo e usar um objeto Lis

FYI, minha coleção terá menos de 200 elementos e, em última análise, desejarei encontrar o par que corresponda à menor quantidade de curinga

questionAnswers(3)

yourAnswerToTheQuestion