Trabalhar com um lista de strings

4 respostas
S

Ola pessoal eu gostava de saber como faço pra ter uma lista de string e poder percorrer a mesma.
Ou seja quero adicionar strings e ler.

4 Respostas

W

Pra percorrer a lista, tipo assim:

List<String> lista = new ArrayList<String>();  
for(String s : lista) {  
   // codigo pra imprimir ou fazer o diabo com a string.
}

//Daniel

D

Você pode usar as classes que utilizam lista, como ArrayList. No caso de lista de Strings você pode usar um recurso novo adicionado no java 5 que são os genéricos. Ficaria assim:

ArrayList<String> lista = new ArrayList<String>();

Nesta lista você só pode adicionar Strings. Dá uma pesquisada na API e você consegue encontrar os métodos para adicionar, e buscar os valores da e na lista.

abraços!

S

Obrigado pessoal a solucao que usei é essa mesmo.

Encontrei nesta pagina http://leepoint.net/notes-java/data/collections/lists/arraylist.html

Espero que ajude alguem ;D

V

Algumas dicas:

1. Sempre use o arraylist através da interface List. Ou seja, faça assim:
List<String> lista = new ArrayList<String>();

e não assim:
ArrayList<String> lista = new ArrayList<String>();

Isso permite que você depois troque a implementação da lista, sem refazer seu código inteiro. Da mesma forma, métodos que retornem o tipo List, ou que aceitem o tipo List como parâmetro, suportam mais listas do que só o ArrayList.

2. Use o iterator apenas se quiser excluir elementos da lista.

Por exemplo, o código abaixo percorre a lista e exclui todos os João.
Iterator<String> it = lista.iterator();
while (it.hasNext()) {
    String valor = it.next();
    if (valor.startsWith("João"))
        it.remove();
}

Se você tentar excluir um elemento durante um for...each, obterá uma ConcurrentModificationException.

3. Outra forma de percorrer a lista excluindo elementos é percorrer uma cópia da lista, mas chamar o remove da lista mesmo.

for (String nome : new ArrayList(lista)) {
   if (nome.startsWith("João"))
        lista.remove(nome);
}

Esse método é menos eficiente que o anterior, já que o remove irá percorrer novamente a lista original. Por outro lado, é bem útil quando a remoção está sendo feita em algum método, e você não teria acesso ao iterator a partir de lá. Por exemplo:

public void removerDaLista(String nome) {
    if (!podeRemover(nome))
      throw new IllegalArgumentException("O nome não pode ser removido!");

    //Essa remoção é um pouco mais complexa, por isso a existência de um método
    lista.remove(nome);
    indice.remove(nome);
    nomes--;
}

//Como implementar esse método, chamando o RemoverDaLista?
//Não cabe usar o iterator, pois ele não fará aquelas verificações.
//Se você usar o iterator e chamar o método removerDaLista com o nome obtido, o método chamará o remove e o 
//iterator disparará ConcurrentModificationException. O iterator só funciona com seu próprio remove()
//Você poderia duplicar código, o que dificilmente é uma boa prática
//
//Ou, fazer como fiz acima, percorrer uma cópia da lista. Observe:
public void removerTodos(String nome) {
for (String nome : new ArrayList(lista)) {
   if (nome.startsWith("João"))
        removerDaLista(nome);         
}
Criado 18 de agosto de 2009
Ultima resposta 18 de ago. de 2009
Respostas 4
Participantes 4