Adicionar item em List de outra Classe

Gostaria de saber como faço para pegar dois resultados, cada um de classes diferentes e vincular a um LIST de outra classe. Tenho uma classe de Alunos e outro de Disciplinas, todos armazenados em uma LIST. Tenho a opção para vincular um aluno a uma Disciplina através de um LIST e não estou conseguindo fazer. Segue meu Código:

List<AlunoCad> aluno1 = new ArrayList<AlunoCad>();
    
    List<Disciplina> disciplinas = new ArrayList<Disciplina>();
    
    String titulo = "Sistema Academico";
    String conteudo  = "1 - Cadastrar Aluno\n"
                     + "2 - Cadastrar Disciplina\n"
                     + "3 - Cadastrar Professor\n"
                     + "4 - Listar Alunos\n"
                     + "5 - Listar Disciplinas\n"
                     + "6 - Listar Professor\n"
                     + "7 - Vincular Aluno/Disciplina\n"
                     + "8 - Todos cadastrados\n"                
                     + "9 - Sair";
    
    int contadorMatricula = 1;
    int contCodDisciplina = 1;
    
    while (true){
    
    String opcao = JOptionPane.showInputDialog(null, conteudo, titulo, JOptionPane.QUESTION_MESSAGE);
    
    switch (opcao){
        
        case "1":
            AlunoCad alunocad = new AlunoCad();
            
            alunocad.setNome(titulo);
            alunocad.setCpf(titulo);
            alunocad.setIdade(titulo);
            alunocad.setMatricula(contadorMatricula);
            contadorMatricula++;
            //alunocad.idade = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe a idade", titulo, JOptionPane.QUESTION_MESSAGE));
            //alunocad.matricula = new Matricula();
           // alunocad.matricula.numero = contadorMatricula;
            //contadorMatricula++;
            
            aluno1.add(alunocad);
            
            break;
                            
        case "2":
            
            Disciplina disciplina = new Disciplina();
            
            disciplina.setCodigo(contCodDisciplina);
            contCodDisciplina++;
            disciplina.setDatainicio(titulo);
            disciplina.setPeriodo(titulo);
            disciplinas.add(disciplina);
            
            break;
            
        case "4":
            
            for (int i = 0; i < aluno1.size(); i++){
                aluno1.get(i).mostraAluno(titulo);
            }
            
        case "5":
            
            for (int i = 0; i < disciplinas.size(); i++){
                disciplinas.get(i).listarDisciplinas(titulo);
            }
            
            break;
            
        case "7":
            //Vinculando aluno a sua disciplina
            String alunov = JOptionPane.showInputDialog(null, "Informe o codigo do Aluno", titulo, JOptionPane.QUESTION_MESSAGE);
            String disciplinav = JOptionPane.showInputDialog(null, "Informe o codigo da Disciplina", titulo, JOptionPane.QUESTION_MESSAGE);
            
            for (int a = 0; a < aluno1.size(); a++){
                if (aluno1.get(a).equals(alunov)){
                    
                    Matricula aluno = new Matricula();
                    
                    aluno.disciplinas.add(aluno1.get(a).mostraAluno(titulo));
                }
                
                for (int d = 0; d < disciplinas.size(); d++){
                    if (disciplinas.get(d).equals(disciplinav)){
                        
                     Matricula discip = new Matricula();  
                     
                     discip.disciplinas.add(disciplinas.get(d).listarDisciplinas(titulo));
                    }
                }
                
            }
            
            break;
            
        case "9":
            
            System.exit(0);
            
            break;
                    
        
    }
    
 }
    
}  

A questão é quando escolher a opção 7, e ele tem que pegar o aluno e disciplina vinculados e adicionar a uma List todos os dados de cada um.

Antes de fazer essa associação, você precisa entender que, caso cada aluno seja representado por uma String e cada disciplina também seja representada por uma String, será necessário um meio de concatenar ambas.
A melhor forma disso seria criar uma classe que pudesse ter um aluno e uma disciplina (tendo em vista que cada aluno pode se associar a diversas disciplinas e cada disciplina a vários alunos, criaríamos um mecanismo que simula o many to many).
A partir daí você criaria esta lista, contendo objetos do tipo AlunoDisciplina, por exemplo.

Deixando um pouco de lado qualquer aspecto de eng. de software/boas práticas OO e focando especificamente na sua dúvida. Você tem a classe Aluno e uma classe Matricula, certo? E tem também uma lista de cada um desses que o usuário vai cadastrar, né?

List<Aluno> todoOsAlunos;
List<Disciplina> todasAsDisciplinas;

Para associar um ao outro, você faz:

  1. Encontra os objetos nas listas (coisa que parece que você já está fazendo):

     Aluno aluno = // encontra aluno em todosOsAlunos
     Disciplina disciplina = // encontra disciplina em todasAsDisciplinas
    
  2. Associa um ao outro como achar melhor, dependendo de como estão as classes Aluno e Disciplina

     aluno.addDisciplina(disciplina);
     disciplina.addAluno(aluno);
    

Pronto, os dois estão associados. Olhando seu código por cima, parece que ele já faz isso, e guarda a associação numa lista de matrículas, correto? É exatamente a mesma coisa:

List<Matricula> matriculas;

Matricula novaMatricula = new Matricula(aluno, disciplina);
matriculas.add(novaMatricula);

Se você faz dessa forma, não precisa associar os elementos uns com os outros como eu falei no passo 2, é uma alternativa diferente.

Isso é igual atividade da Faculdade de POO que fiz o ano passado… mesma coisa rsrsrs!!