Ajuda com arraylist comando "remove"

Boa noite pessoal,
Estou com um problema par conseguir fazer funcionar um remove usando arraylist,

import javax.swing.JOptionPane;
import java.util.*;


public class Agenda {
	ArrayList<Object> contatos = new ArrayList<Object>();
	
	
	public void adicionarContato(String nome, String celular, String email){	
		contatos.add(nome);
		contatos.add(celular);
		contatos.add(email);
		}
	

	public void removerContato(String nome){
	 Iterator<Object> it = contatos.iterator();  
	  while (it.hasNext()) {      
	    if (nome.equals(it.hasNext())) {  
	       it.remove();  
		 }  
      } 	
	}

O problema esta em nao conseguir excluir os 3 valores quando quero excluir um contato no caso.
ele esta funcionando, porem so exclui o “nome”, e os outros 2 valores “celular” e “email” ficam.
Alguem pode me ajudar a resolver isso?

Troque a linha 19 por:

 if (nome.equals(it.next())) {    

O hasNext() retorna um boolean, indicando se existe ou não um próximo.
E o next() é o que retorna esse próximo, e faz o iterator andar.

Outra coisa. Seria bom criar uma classe chamada Contato com os 3 campos, e fazer seu ArrayList de contato, e não de Object.

Opa vini, blz, vlw pela resposta mas nao esta funcionando.

mudei oq vc disse, ficou assim,

public class Agenda {
	ArrayList<Contato> contatos = new ArrayList<Contato>();
	
		
		
		
	public void adicionarContato(String nome, String celular, String email){	
			contatos.add(new Contato(nome,celular,email));
			
			}
		
	

	  public void removerContato(String nome){  
		      Iterator<Contato> it = contatos.iterator();    
		      while (it.hasNext()) {        
		    	  if (nome.equals(it.next())) {    
		           it.remove();    
		    	  }
		      }   
	       }  

Agora o problema, é que nao sei como pegar o “número” acho q seja com get, para poder excluir um dos contatos, via nome. Ou seja, vc passa como parametro o nome, e se ele existir no arraylist, o metodo removeContato vai remover nome,celular e email do array. nao sei se consegui me expressar bem?

Agora vc está comparando um Contato com um String.

Acho que o certo seria:

public void removerContato(String nome){ Iterator<Contato> it = contatos.iterator(); while (it.hasNext()) { Contato contato = it.next(); if (nome.equals(contato.getNome())) { it.remove(); } }

Outra coisa é preferível declarar collections a partir da sua interface. Ou seja, assim:

List<Contato> contatos = new ArrayList<Contato>();

Isso facilita caso você queira trocar o tipo da lista no futuro para um LinkedList, por exemplo.

E, não se preocupe, o remove() irá remover o contato inteiro.

ele nao ta reconhecendo o getNome()

 if (nome.equals(contato.getNome())) { 

Você não colocou um método getNome() na sua classe?

não.

Como eu o criaria, e onde?

Que tapado eu sou, é só criar ela em contato, retornando nome.

Agora ta funcionando.

Muito obrigado mesmo cara, é de pessoas como vc que o mundo precisa!!!

VLWW

vc poderia me dar alguma dica de como faço esses dados do array list “persistirem”, ou seja q eles nao “sumam”.
obs: sem banco de dados.

[quote=samuelr]vc poderia me dar alguma dica de como faço esses dados do array list “persistirem”, ou seja q eles nao “sumam”.
obs: sem banco de dados.[/quote]
serializando?

pode ser rafa, vc teria um exemplo bem simples de implementar, sem modificar muito minhas classes?

Aí vc quer mágica. :slight_smile:

Sem banco e sem implementar nada fica um pouco difícil.

Pode ate implementar Vini, so nao pode ter banco.
Problema é q nao faço nem ideia de como usar o serialize.
vc teria algum exemplo bacana e simples?

Boas,

pessoal eu tenho eu tenho uma ArrayList no qual coloco convites, esta lista é do tipo convites. Que é um objecto: Convite(String origem, String destino), ou seja a origem do convite e para quem é.

Estes convites sao também armazenados num ficheiro de texto. O meu problema é o seguinte. Quando o destinatario aceita o convite eu keria k o convite fosse removido da lista e do ficheiro porque caso contrario quando o utilizador voltasse a ver se tem algum convite, ia-lhe a aparecer o mesmo.

Eu ja estive a pesquisar mas nao consegui chegar a qqer solucao, agradecia se alguem me pudesse dar uma dica!

Cumprimentos,

jmga9