Dr.Smoke Posted June 13, 2011 Report Share Posted June 13, 2011 (edited) buenas tengo la siguiente duda supongamos que tengo una ArrayList de nombre contactos la cual es de tipo contacto donde hay un nombre. para buscar y eliminar a todos los contactos con el mismo nombre se me ocurre que podría ser así: public void buscarEliminar(String nuevoNombre) { for(Contacto x : contactos) { if(x.getNombre().equalsIgnoreCase(nuevoNombre)) { contactos.remove(x); } } } pero me da un error quisiera saber cómo busco al contacto en la ArrayList por su nombre y lo elimino? Edited June 13, 2011 by Dr.Smoke Link to comment Share on other sites More sharing options...
bersek Posted June 13, 2011 Report Share Posted June 13, 2011 podrías decir cual es el tipo de error que te arroja Link to comment Share on other sites More sharing options...
Dr.Smoke Posted June 13, 2011 Author Report Share Posted June 13, 2011 (edited) mmm ok espera deja hacer el ejercisios eske no guarde el codigo. ----- OK ya no me da error cosa rara porke antes si bueno la cosa es que elimina solo uno y no a todos los que se llaman igual me entieneden dejo el codigo de las dos clase: public class Contacto { private String nombre; public Contacto(String nombre) { this.nombre = nombre; } public Contacto() { this.nombre = null; } public String getNombre(){ return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } } import java.util.ArrayList; public class Agenda { private ArrayList<Contacto> contactos; public Agenda() { this.contactos = new ArrayList<Contacto>(); } public void agregarContacto(Contacto contacto) { contactos.add(contacto); } public void listarContactos() { for(Contacto x : contactos) { System.out.println("Nombre: "+x.getNombre()); } } public void buscarEliminar(String nuevoNombre) { for(Contacto x : contactos) { if(x.getNombre().equalsIgnoreCase(nuevoNombre)) { contactos.remove(x); } } } } Edited June 13, 2011 by Dr.Smoke Link to comment Share on other sites More sharing options...
bersek Posted June 13, 2011 Report Share Posted June 13, 2011 (edited) amigo su problema es simple el error que te manda es porque estas modificando la lista al mismo tiempo que la recorres. el for each o for mejorado te sirve solo para iterar una lista y no para agregar o quitar datos a la lista como solucion te propongo que en el metodo buscarEliminar crees un nuevo arrayList que te almacene los objetos que van a ser eliminados luego llamas al metodo removeall(Collection<?> c) de la lista contactos y le pases como parametro el arrayList que contiene la lista de objetos que van a ser eliminados pd: si tienes problemas te agrego el código... pero lo ideal es que lo hagas tu Edited June 13, 2011 by bersek Link to comment Share on other sites More sharing options...
Dr.Smoke Posted June 13, 2011 Author Report Share Posted June 13, 2011 (edited) mmm entiendo pero la verdad eske hoy resien vimos ArrayList y el ForEach y me surgio esa duda pero si la solucion es tan dificil no importa ya se ira despejando con el tiempo ---- se ke es pedir mucho pero si mostraras el codigo comentado para aprender lo que me dices... o quizas no todo el codigo pero aclararme mejor eso xD eske no se me ocurre como hacerlo. Edited June 13, 2011 by Dr.Smoke Link to comment Share on other sites More sharing options...
bersek Posted June 13, 2011 Report Share Posted June 13, 2011 (edited) public void buscarEliminar(String nuevoNombre) { //creamos el ArrayList auxiliar que nos va a contener los objetos que serán eliminados ArrayList<Contacto> aux=new ArrayList<Contacto>(); for(Contacto x : contactos) { if(x.getNombre().equalsIgnoreCase(nuevoNombre)) { aux.add(x); // si se cumple la condición, guardamos el objeto en la lista } } //aqui le pasamos la lista de objetos que cumplían con la condición para que sean eliminados de la lista contactos contatos.removeAll(aux); } es mas facil de lo que parece :ROLF: otra cosa...en tu clase Contacto tienes dos constructores y uno de ellos deja a la variable "nombre" con una referencia null asegúrate de que al momento de crear el objeto, el nombre no quede con dicha referencia ya que aunque se agregue a la lista sin problemas, te dará un error en tiempo de ejecución de tipo NullPointerException Edited June 14, 2011 by bersek Link to comment Share on other sites More sharing options...
Dr.Smoke Posted June 14, 2011 Author Report Share Posted June 14, 2011 ok muchas gracias de verdad que esto es exitante kjaskjaksj.... gracias guru :master: Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now