Problema de lógica? Leitura de arquivo TXT e agrupamento de informações

Boa tarde Amigos.
Estou com um problema de lógica “eu acho” e precisei apelar para os amigos do GUJ, não pela solução e sim por uma dica…

Tenho um arquivo texto contendo CHAVE e VALORES, exemplo:

CHAVE1 | valor 1
CHAVE1 | valor 2
CHAVE1 | valor 3
CHAVE1 | valor 4
CHAVE1 | valor 5
CHAVE2 | valor 1
CHAVE2 | valor 2
CHAVE3 | valor 1

Preciso montar um outro arquivo agrupado por CHAVE, exemplo:

"CHAVE1","valor 1,valor 2,valor 3,valor 4,valor 5" 
"CHAVE2","valor 1,valor 2"
"CHAVE3","valor 1"

Qual foi minha idéia. Ler linha a linha do arquivo inicial e gravar em um Hash a chave. A cada leitura ele verificaria se a chave já existe…caso existe, ele concatena os valores… mas estou apanhando muito para fechar isso, pois na hora de gerar o outro arquivo com o agrupamento, ele se repete.

                while((linha=buffer.readLine()) != null){
                    result = linha.split(getSpltPerfil());
                    chave= result[1].replaceAll(separator, "");
                    valor = result[0].replaceAll(separator, "");

                    if(!hm.containsKey(chave)){
                        hm.put(chave, valor );
                        System.out.println(chave +"-"+valor);
                    }else{
                        String temp = hm.get(chave).toString();
                        temp= temp + "," + valor ;
                        hm.put(chave, temp);
                       System.out.println(chave +"-"+valor);
                    }
                }  

alguma sugestão para que eu consiga chegar ao resultado:

"CHAVE1","valor 1,valor 2,valor 3,valor 4,valor 5" 
"CHAVE2","valor 1,valor 2"
"CHAVE3","valor 1"

Grato

o que é impresso quando você roda seu código ?