Duvida com ArrayList

Carríssimos,

aqui estou eu outra vez a pedir a ajuda de vcs.

Como alguns já sabem estou fazendo um trabalho final de semestre na faculdade e tem algumas partes
que como meu professor não ensinou tenho que me virar. Portanto, aqui está minha dúvida.

Criei uma array list Cliente, e agora preciso receber um nome de entrada e excluir o cliente com o respectivo
nome. então criei esse método, porém não está dando certo, não aparece nenhum erro, mas ele não acha, olhem:

public void excluirCliente(String nome){
		for(int i = 0; i < cliente.size(); i++){
		if(cliente.get(i).getNome().equalsIgnoreCase(nome))
		cliente.remove(nome);
		}
	}

Eu mando o nome, através da minha classe principal chamando esse método assim:

[code]
if(action.getSource() == cons){

		String nome;
		
		nome = JOptionPane.showInputDialog("Digite um Nome: " );

                    System.out.println(loja.cliente.size());
		loja.excluirCliente(nome);
		System.out.println(loja.cliente.size());
	 
	}[/code]

Por mim está certo, porém, não exclui de maneira alguma.

O

[code]System.out.println(loja.cliente.size());[\code]

é só pra verificar se excluiu.
Se puderem ajudar… Fico muito Grato.

Abraços.!

O método “remove” da interface java.util.List (que é o que você está usando) pede um objeto, não um campo de um objeto. Quando você passou só o nome, 'remove" não consegue remover o elemento do ArrayList.
Outra coisinha. Quando você anda sobre uma lista com for e usando índices, se você remover um elemento dessa lista enquanto a está percorrendo, vai tomar uma exceção “ConcurrentModificationException”. No seu caso, o correto é usar um Iterator, e remover o elemento usando o método “remove” do Iterator.

É mais simples mostrar que explicar. Vou tentar corrigir seu código. Estou supondo que você declarou a variável “cliente” (seria melhor usar um nome como “clientes” (plural, indicando que contém vários clientes) ou “listaClientes”, para evitar confusão) dessa maneira:

List<Cliente> clientes = new ArrayList<Cliente>();

Se você declarou assim, então você deveria fazer algo como:

public void excluirClientePorNome (String nome) {
    for (Iterator<Cliente> itCliente = clientes.iterator(); itCliente.hasNext(); ) {
        Cliente esteCliente = itCliente.next();
        if (esteCliente.getNome().equalsIgnoreCase (nome)) {
            itCliente.remove(); // remove esteCliente
        }
    }
}

Mais uma coisinha. Talvez você queira saber quantos clientes foram excluídos por excluirClientePorNome(). Você poderia, nesse caso, retornar o número de clientes excluídos:

public int excluirClientePorNome (String nome) {
    int nClientesExcluidos = 0;
    for (Iterator<Cliente> itCliente = clientes.iterator(); itCliente.hasNext(); ) {
        Cliente esteCliente = itCliente.next();
        if (esteCliente.getNome().equalsIgnoreCase (nome)) {
            itCliente.remove(); // remove esteCliente
            nClientesExcluidos++;
        }
    }
    return nClientesExcluidos;
}