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(); } } ........