Arraylist - DÚVIDA

8 respostas
D

Como posso verificar se dentro de um arraylist existe alguma palavra que comece com “adm” por exemplo?

Grata,
Adriana

8 Respostas

C

Olá,

Acredito que vc terá que iterar esse ArrayList e testar cada item com startsWith(String).

Rafael_Nunes

Tenta fazer om o método indexOf da própria classe, você pode utilizar equals com ele. Mas acho que vai dar um pouco de trabalho.
Mais simples eu creio que seria você transformar em um array de Strings e fazer a verificação.

andre_a_s
Arraylist.contains("adm");
D

Já tinha testado com Arraylist.contains(“adm”) mas não funciona e tbm quero parte da palavra.

Como funciona o startsWith(String)?

Existe a possibilidade de não ter q caminhar de item a item?

Rafael_Nunes

drikinha77:
Existe a possibilidade de não ter q caminhar de item a item?

Como você verifica um determinado item sem passar por ele?

T

Ela não quer saber se existe a palavra “adm” - que é o que você sugeriu; ela quer saber se existe uma palavra que começa por “adm”. No caso dela realmente é necessário fazer uma de duas coisas:

  • Se ela precisa procurar só uma vez, percorrer o arraylist como sugerido.
  • Se ela precisa procurar várias vezes por diferentes prefixos (por exemplo, “pro”, “adm”, “adv” etc.) então seria melhor copiar o arraylist em outro arraylist ou array, ordená-lo, e usar Collections.binarySearch ou Arrays.binarySearch. Se esse método voltar um valor positivo, foi encontrado o valor nessa posição. Se voltar um valor negativo (“insertion point”), então deve-se examinar uma posição depois desse “ponto de inserção” para ver se achamos um valor com o prefixo sugerido.
import java.util.*;
class BinarySearch {
    public static void main(String[] args) {
        String[] profs = { // já ordenado
            "advogado",
            "administrador",
            "analista",
            "contador",
            "engenheiro"
        };
        int pos = Arrays.binarySearch (profs, "adv"); // retornou -1
        System.out.println (pos);
        pos = Arrays.binarySearch (profs, "adm"); // retornou -1
        System.out.println (pos);
        pos = Arrays.binarySearch (profs, "cer"); // retornou -4
        System.out.println (pos);
    }
}

No caso “cer”, procure na posição +4 do array, como começa por “con” e não por “cer”, então “cer” não existe no array.

O retorno -1 é especial, porque nesse caso devemos procurar na posição +0 e +1 do array.
No caso “adm”, a posição +0 do array não começa com “adm” mas a posição +1 começa, então foi encontrado.
No caso “adv”, a posição +0 do array começa com “adv”.

C
String teste = "abcd";

teste.startsWith("ab"); //vai verificar se a string começa com ab
Guilherme_Silveira

o thingol deu uma solucao boa
outra eh usar uma tabela de hash

Criado 31 de maio de 2005
Ultima resposta 31 de mai. de 2005
Respostas 8
Participantes 6