[quote]xxMAGRAOxx
15/04/2013 04:49:24 Assunto: Re:Método de busca em um arraylist
view plaincopy to clipboardprint?
System.out.println(listaClientes.get(busca));
O método get od array busca por indíce e não por chave. Exemplo:
Digamos que um usuário digitou o CPF : 12345 vc foi e adicionou isto ao array,
view plaincopy to clipboardprint?
listaClientes.add(busca);
Este valor foi adicionado no indíce 0 do array. O array só tem uma posição até então e você está tentando acessar a posição get(busca), onde busca é 12345.
Você está estourando o array, pois ele não possui valor algum neste indíce(12345).
Experimenta get(0).
ps: O mais aconselhável para o seu exemplo é um HashMap, pois dada uma chave ele consegue achar facilmente sem ter que percorrer toda a estrutura de dados.
[/quote]
[size=15]Valeu a dica, mas é aí que está, não quero acessar o array utilizando um “índice” 0, 1, 2, 3, … Eu preciso é buscar pelo valor que está contido lá dentro… Estava adequando meu fonte para usar um HashMap como indicado, irei postar o código aqui…[/size]
[quote]NewScript
15/04/2013 10:06:15 Assunto: Re:Método de busca em um arraylist
Ola, sou novato também, então se escrever alguma bobeira…
1º o sua variável busca é do tipo inteiro,
2º busca recebe entrada.nextInt, //recebe um int, int é adequado para cpf e cnpj?
3º listaClientes.contains(busca), //contains usa Object como parâmetro, então, teoricamente recebe um int…
4º listaClientes.get(busca), //get retorna o elemento ocupado pelo índice, neste caso, busca…
Com os dados que vc passou, teoricamente está tudo correto.
ArrayList recebe elementos duplicados… e, até onde eu sei, não há erros de IndexOutOfBoundsException porque ele se se adeqüa à quantidade de elementos… então de onde vem IndexOutOfBoundsException?
Então fica complicado (pra mim) saber oque está acontecendo…
Mande o código de como vc definiu o ArrayList e as linhas do código que foram citadas nos erros (de preferência a linha citada, a anterior e a posterior)… [/quote]
[size=15]Isso, tipo INT, ainda não trabalhei muito bem o tipo de dados de entrada, no momento para testes o INT está me servindo, sendo que ao cadastrar um cpf uso geralmente 111, 222, 333 e assim vai, Isso, contains recebe o int “busca” como parâmetro… Mais acima está descrito o que realmente preciso, que é realizar uma busca não pelo índice de um array mas sim pelo seu valor contido lá dentro… entende?[/size]
[quote]xxMAGRAOxx
15/04/2013 15:40:22 Assunto: Re:Método de busca em um arraylist
ArrayList recebe elementos duplicados… e, até onde eu sei, não há erros de IndexOutOfBoundsException porque ele se se adeqüa à quantidade de elementos… então de onde vem IndexOutOfBoundsException?
Cara, o array se adequa de tamanho conforme você vai inserindo elementos nele, porém, o erro de IndexBoundsException é quando você tenta acessar uma posição que não existe no array.
No caso dele, ele inseriu 4 cpfs no array e tentou acessar a posição 111(o ultimo cpf no caso), onde o array só possui 4.
veja:
view plaincopy to clipboardprint?
Exception in thread “main” java.lang.IndexOutOfBoundsException: Index: 111, Size: 4
[/quote]
[size=15]Exatamente! Valeu por me descrever melhor esse erro![/size]