non mi sembra che vada sempre bene, ad esempio:
codice:
Array in cui cercare:

abaco
abano
abate
acacia

Stringa da cercare:
aba?

risultato

abaco
il che e' sbagliato... il risultato "abaco" in questo caso lo dovresti potresti ottenere con stringhe tipo abac?, abac*, ab*, aba??, ecc. ecc. ecc. ma non con "aba?".
infatti e' molto chiaro come nel codice i caratteri che dovrebbero fare da wildcard come ? e * sono trattati allo stesso identico modo.

Secondo me ti conviene trasformare la stringa "inserita dall'utente" (quella con i ? e gli *) in una regex e far matchare quella..
Dai un'occhio alla classe Pattern qui sotto..
http://java.sun.com/j2se/1.5.0/docs/...x/Pattern.html