acabei de ler o capitulo sobre Collections e Generics e parece que entendi boa parte, mas uma coisa que quando fui testar nao deu o resultado que eu esperava eh o tal do metodo binarySearch… os resultados nao foram conforme eu esperava, pelo que eu sei ele deve retornar a posicao que o valor esta no array. acho que nao entendi nada disso, alguem pode me explicar? esse codigo ai eh um teste que eu fiz pra testar soh que os resultados nao sao conforme eu esperava que fosse…
[code] import java.util.*;
public class Test
{
public static void main(String[] args)
{
String[] s ={“map”,“jeep”,“vec”,“ka”};
como podem ver, quando eu executei este codigo pesquisando por “map” no array, ele me retorna -3… mas nao era pra retornar a posicao? no caso 0??? e quando eu coloco pra pesquisar o “jeep” beleza, retorna a posicao 1… com “vec” tambem, tudo certinho retorna a posicao 2… agora com “ka” retorna -3 tambem… o que que acontece? qualquer ajuda pra clarear minha mente eh muito bem vinda.
public class Test
{
public static void main(String[] args)
{
String[] s ={"a","c","d"};
System.out.println(Arrays.binarySearch(s,"e"));
}
}
vendo outros posts eu percebi que caso ele nao ache o que foi solicitado ele insere um valor negativo da posicao que ele deveria estar… neste meu outro exemplo ele retorna -4 nao deveria ser -3 ???
String[] s = {a,c}
System.out.print(s[0]) + " " +System.out.print(s[1]);
e teríamos a saída a c.
Se tu adicionasse o “b”, pela ordem natural, ele deveria ser adicionado no s[1], não é verdade?
Então, como o 0 é um valor válido de índice, s[1] é a segunda posição.
Logo, o retorno do binarySearch nesse caso seria -2.
Ah, outra coisa, já ia me esquecendo.
A classe String implementa Comparable, para que o sort funcione. O Comparable classifica Strings em ordem natural, ou seja, em ordem alfabética.
Os dados do teu array são:
a, c, d.
O retorno do e é -4 porque em ordem alfabética ainda falta o b no teu array!
[quote=L.Bach]Ah, outra coisa, já ia me esquecendo.
A classe String implementa Comparable, para que o sort funcione. O Comparable classifica Strings em ordem natural, ou seja, em ordem alfabética.
Os dados do teu array são:
a, c, d.
O retorno do e é -4 porque em ordem alfabética ainda falta o b no teu array!
Abraço[/quote]
bom, eu peguei o exemplo dado e fiz diversas modificações no array e sempre retornou -4.
Desculpa, mas eu não acredito que ele retornou -4 pelo fato do caracter ‘b’ estar ausentado !!!
E sim que a próxima posição disponível seria a terceira (based-zero).
ve se este codigo lhe ajuda um pouco, pelo que tenho lido e entendido sobre a binarySearch(), sempre temos que usar o Arrays.sort() no array que devemos procurar.
logo após utilizar o método sort() , tdo funciona bem.