Como varrer dentro de um arraylist um outro arraylist?

Estou desenvolvendo um sistema que cadastra Filmes, salas, dentre outras coisas, de um cinema. A parte dos filmes está feita, mas a de salas que inclui um arraylist de sessões não funciona. A classe Sala tem um numero, uma capacidade, um tipo de sala(3d ou 2d), um filme, e pode ter até 3 sessões(cada uma delas tem uma quantidade de ingressos baseada na quantidade de cadeiras da sala, e um horario). Baseado nisso, o que eu pretendo fazer é ler essas sessões dentro de uma determinada posição do arraylist de salas, procurando pelo nome do horario nela, e caso ache os horarios que eu quero, checkboxes correspondentes aos horários serão marcadas num JFrame. A questão é, por mais que eu tente, as checkboxes nunca ficam ticadas. Segue o código:

private void buscaActionPerformed(java.awt.event.ActionEvent evt) {                                      
    for(int i=0;i<Cinema.salas.size();i++)
            if(Cinema.salas.get(i).getId()==Integer.parseInt(numero.getText())){
                if(Cinema.salas.get(i) instanceof Sala2D){
                    salaBox.setSelectedIndex(0);     
                }               
                else if(Cinema.salas.get(i) instanceof Sala3D){
                    salaBox.setSelectedIndex(1);   
                }  
                numero.setText(Integer.toString(Cinema.salas.get(i).getId()));
                capacidade.setText(Integer.toString(Cinema.salas.get(i).getCapacidade()));
                filmes.setSelectedItem(Cinema.salas.get(i).getFilme());
                    for(int j=0;j<Cinema.salas.get(i).getSessoes().size();j++){
                        JOptionPane.showMessageDialog(null,"Passei do for");
                        if(Cinema.salas.get(i).getSessoes().get(j).getHorario().contains("14h")){
                            quatorze.setSelected(true);
                        }
                        JOptionPane.showMessageDialog(null,"Passei do primeiro if");
                        if(Cinema.salas.get(i).getSessoes().get(j).getHorario().equals("16h")){
                            dezesseis.setSelected(true);
                        }
                        if(Cinema.salas.get(i).getSessoes().get(j).getHorario().equals("18h")){
                            dezoito.setSelected(true);
                        }
                }
                break;
            }
    }         

Caso seja necessário, o código do botão cadastrar(que funciona normalmente):

private void cadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
  //  Sessao[] sessoes=new Sessao[4];
    ArrayList<Sessao> session= new ArrayList();
    int check=0;
    try{
        if(quatorze.isSelected()){
           Sessao sessao14= new Sessao("14h",Integer.parseInt(capacidade.getText()));
           session.add(sessao14);
        }
        if(dezesseis.isSelected()){
            Sessao sessao16=new Sessao("16h",Integer.parseInt(capacidade.getText()));
            session.add(sessao16);
        }
        if(dezoito.isSelected()){
           Sessao sessao18=new Sessao("18h",Integer.parseInt(capacidade.getText()));
           session.add(sessao18);
        }
        if(salaBox.getSelectedIndex()==0){
            Sala novaSala2D= new Sala2D(Integer.parseInt(numero.getText()),Integer.parseInt(capacidade.getText()),session,filmes.getSelectedItem().toString());
            Cinema.salas.add(novaSala2D);
            check=0;
        }
        else if(salaBox.getSelectedIndex()==1){
            Sala novaSala3D= new Sala3D(Integer.parseInt(numero.getText()),Integer.parseInt(capacidade.getText()),session,filmes.getSelectedItem().toString());
            Cinema.salas.add(novaSala3D);
            check=1;
        }
        
        if(check==0){
            JOptionPane.showMessageDialog(null,"Sala 2D Cadastrada com sucesso!");
            clear();
        }
        else{
            JOptionPane.showMessageDialog(null,"Sala 3D Cadastrada com sucesso!");
            clear();
        }
    } catch(NumberFormatException exception){//Se o usuário não insere um valor numérico, uma excessão é gerada.
        JOptionPane.showMessageDialog(null,"Por favor, insira um valor numérico inteiro nos campos de texto!");
    }
      catch(NullPointerException exception){// Se o usuário não insere um filme,nada é passado do comboBox pro construtor
          JOptionPane.showMessageDialog(null, "Por favor, cadastre um filme na tela anterior no registro de filmes antes de vir aqui!");
      }
    //JOptionPane.showMessageDialog(null, session.get(0).getHorario()+session.get(1).getHorario()+session.get(2).getHorario());
    
    }

Eu tenho quase 100% de certeza que o problema está no for interno, mas não sei o que está errado.

Embora funcione, isso acaba complicando o código:

Cinema.salas.get(i)

Por que não:

Sala sala = Cinema.salas.get(i);
List<Sessao> sessoes = sala.getSessoes();

E, então:

for(int j=0;j< sessoes.size();j++){

E

Sessao sessao = Cinema.salas.get(i).getSessoes().get(j);
if(sessao.getHorario().contains("14h")){

Já ajuda a dar uma clareada

1 curtida