Hola, tengo un problema al eliminar de un arrayList. Os cuento, para crear un objeto de la clase Profesor accedo a la tabla Profesor para recoger los datos de los profesores y despues hago un inner join entre dos tablas para tener las materias que da cada profesor. Todo esto lo hace bien porque cuando yo imprimo por pantalla la linea que veis muestra los datos perfectamente, el problema es que en otro método en el cual accedo a estos objetos, lo datos(nombre, dni...) lo muestra bien, pero cuando accedo al arraylist del objeto profesor(la lista de materias) me dice que está vacío.
El problema creo que es cuando elimino del arraylist, ya que si quito esa parte lo que hace en esa otra función es mostrarme las materias que dan TODOS los profesores, es decir añade las de un profesor encima de otro(por eso cuando cambia de profesor elimino la lista de materias.
¿Alguien sabe que puede suceder?
Código:
/* DECLARACIÓN VARIABLES */
String SQL = null, SQLMat = null;
Statement stmt = null, stmtMat = null;
ResultSet rs = null, rsMat = null;
long id = 0;
ArrayList <Materia> listaMat = new ArrayList <Materia>();
.........
/* RECUPERAMOS LOS DATOS DE PROFESORES*/
SQL = "SELECT * FROM Profesor WHERE obsoleto_prof=false";
stmt = conex.createStatement();
rs = stmt.executeQuery(SQL);
/* AÑADIR CURSOS A LISTA PROFESORES */
while (rs.next()) {
id = rs.getLong("id_prof");
/* RECUPERAMOS LOS DATOS DE LAS MATERIAS */
modListaMat.removeAllElements();
SQLMat = "SELECT * FROM ensenha INNER JOIN Materia ON ensenha.id_mat=Materia.id_mat WHERE ensenha.id_prof="+id+""; // Recuperamos las materias asociadas al Profesor
stmtMat = conex.createStatement();
rsMat = stmtMat.executeQuery(SQLMat);
while (rsMat.next()) {
Materia mat = new Materia(rsMat.getLong("id_mat"), rsMat.getString("nombre_mat"), rsMat.getBoolean("obsoleto_mat"));
listaMat.add(mat);
}
Profesor prof = new Profesor(id, rs.getString("nombre_prof"), rs.getString("apellido_prof"), rs.getString("dni_prof"), rs.getInt("horas_prof"), rs.getString("fechaContr_prof"), rs.getBoolean("obsoleto_prof"), listaMat);
modLista.addElement(prof);
for ( int i=0 ; i<prof.getListaMaterias().size() ; i++)
System.out.println(id+"-"+prof.getListaMaterias().get(i).getNombre());
Iterator i = listaMat.iterator();
while (i.hasNext()) {
i.next();
i.remove();
}
}
........