Dudas con métodos de collection
Hola experto, antes que nada agradezco tu disposición, mi consulta es la siguiente:
Estoy probando los métodos de Collection e Iterator. Para ello creo una aplicación en donde copio dos arreglos con objeto Paciente en dos arraylist. Esto lo realizo para que después mediante un método elimine del primer arraylist los objetos repetidos en el segundo.
Resulta que al pasar como argumento las dos colecciones, no me elimina el objeto repetido. Es decir, mi coleccion1 queda completa sin sufrir alteraciones. Mi código:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
/**
*
* @author Administrador
*/
public class Main {
private final Paciente arreglo[] = {new Paciente(29,"Carlos","Sarabia"),new Paciente(28,"Yamila","Sanchez")};
private final Paciente arregloEliminar[] = {new Paciente(28,"Yamila","Sanchez")};
public Main()
{
//crea objeto ArrayList y se asignan sus referencias a un objeto List de tipo Paciente
List <Paciente> lista = new ArrayList <Paciente>();
List <Paciente> eliminarLista = new ArrayList <Paciente>();
//agrega los elementos de arreglo a lista
for(Paciente p :arreglo)
lista.add(p);
//agrega los elementos de arregloElimnar a eliminarLista
for(Paciente p: arregloEliminar)
eliminarLista.add(p);
System.out.println("ArrayList: ");
//imprime en pantalla el contenido de la lista
for(Paciente p : lista)
System.out.printf("Nro historia: %d\nNombre: %es\nApellido: %es\n", p.getNro_historia_clinica(),p.getNombre(),p.getApellido());
eliminarPaciente(lista,eliminarLista);
System.out.println("\n\nArrayList después de eliminarPaciente: ");
//imprime en pantalla el contenido de la lista
for(Paciente p:lista)
System.out.printf("Nro historia: %d\nNombre: %es\nApellido: %es\n", p.getNro_historia_clinica(),p.getNombre(),p.getApellido());
}
private void eliminarPaciente(Collection <Paciente> coleccion1, Collection <Paciente> coleccion2)
{
//obtiene el itrador para acceder a los elementos de lista (collecion1)
Iterator <Paciente> iterador = coleccion1.iterator();
//itera mientras la colección tenga elementos
while(iterador.hasNext())
{
//si el paciente existe en las dos colecciones lo elimina de la lista (coleccion1)
if(coleccion2.contains(iterador.next()))
iterador.remove();
}
}
public static void main(String[] args) {
Main m = new Main();
}
}
Desde ya muchas gracias!!!