Agrupar elementos iguais de um arquivo CSV

Pessoal,

Tenho arquivos CSV com os seguinte dados: idCurriculo; idDisciplina; idPreRequisito.

Preciso ler esse arquivo, pegar o id do curriculo e agrupar as disciplinas de acordo com esse id.

Ja tentei de varias maneiras, a mais recente e que se aproximou do que eu quero foi essa:

        FileReader freader = new FileReader(fileAbsolutePath);  
        Scanner sc = new Scanner(freader);  
  
        List<String> listaIds = this.returnIds(fileAbsolutePath);   
  
        Set<String> listaIdsDistintos = new HashSet<String>(listaIds);  
  
        for (Iterator iterator = listaIdsDistintos.iterator(); iterator.hasNext() ; ) {  
            String idDistinto = (String) iterator.next();  
  
            response.getWriter().println(idDistinto);  
  
            while (sc.hasNextLine()) {  
                String line = sc.nextLine();  
                String[] fields = line.split(";");  
  
                if (idDistinto.equals(fields[0])) {  
                    response.getWriter().println(fields[1]);  
                }  
            }                          
        }  
  
        sc.close();  

Eu consigo fazer o upload do CSV, via SERVLET. Leio esse arquivo, envio-o para um método que separa apenas os ids do curriculo. Depois eu o uso o HashSet para que eliminar os valores repetidos.

Leio novamente o CSV, e comparo os ids de cada linha com os valores no meu HashSet (ids não repetidos).

O problema é que ele só mostra as disciplinas do primeiro id. Tenho três ids distintos no meu CSV, ele não mostra o id2 e id3. O que está parecendo é que depois do while (leitura de todo o arquivo) ele não incrementa e não lê novamente.

Não sei o que fazer.

Preciso disso urgente.

Alguém pode me ajudar, por favor?

Sera que alguém pode me ajudar, por favor?

Já tentei de várias maneiras e não consegui, estou precisando muito solucionar isso.

Obrigado.