Um dúvida com o método binarySearch

Boa tarde galera,

Tenho um array:

char [] numeros = {‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘i’,‘j’,‘k’,‘l’,‘m’,‘n’,‘o’,‘p’,‘q’,‘r’,‘s’,‘t’,‘u’,‘v’,‘w’,‘x’,‘y’,‘z’,‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’};

Para que minha busca de posição de qualquer elemento desse array funcione usando o método binarySearch os números tem que estar antes das letras, mas minha lógica tem que ser do jeito que meu array está montado, ou seja, Letras depois Numeros.
O que está acontecendo ?
Por exemplo, se eu peço pra ele me trazer a posição do meu elemento ‘2’ ele me retorna um número negativo.
Alguém teria uma solução pra esse meu problema ?

Para o método binarySearch funcionar, ele precisa de um array ordenado.
Se você puser os números depois das letras, esse array de caracteres não vai estar ordenado (e ponto final!) e então binarySearch não vai funcionar mesmo.
Não adianta forçar a natureza; se você precisa procurar em um array não-ordenado,
a) Ou faça busca linear, ou
b) Ordene o array.

Uma outra alternativa é mudar a forma de ordenação através da criação de um Comparator personalizado.

Como usa-se o Comparator personalizado ?

Para usar um comparador personalizado, você não pode usar Arrays.binarySearch e sim Collections.binarySearch, o que exigiria você mudar sua estrutura de dados de um array de char (char[]) para um List. Acho muito complicado para o que você quer fazer. não? É melhor você ordenar o array mesmo, ou então usar busca linear, que para um array tão pequeno assim vai demorar quase que exatamente o mesmo tempo.

OK, Muito Obrigado.