codice:
public class ElencoStudenti extends HashMap<String, Studente> {
    String matricola;
    // metodo per l'inserimento degli studenti
    public void addStudente(String cognome, String nome, Object appello, Object voto) {
        Studente st = new Studente(cognome, nome, appello, voto);
        this.put(matricola, st);
    }
    
    // metodo per la selezione di un singolo studente
    public Studente getStudente(int i){
        return this.get(i);
    }
}
Provo a scrivere tutto su file txt
codice:
    public void scrivi(ElencoStudenti e, int i) throws IOException{      
        FileWriter f = new FileWriter(doc, true);
        f.write((String)e.matricola+" - "+e.getStudente(i).getCognome()+" - "+e.getStudente(i).getNome()+" - "+e.getStudente(i).getAppello()+" - "+e.getStudente(i).getVoto()+"\r\n");  
        f.close();
    }
E questo è poi il main
codice:
    private void bottoneAggiungiActionPerformed(java.awt.event.ActionEvent evt) {                                                
        // TODO add your handling code here:
        
        e.matricola = matricola.getText();
        e.addStudente(cognome.getText(), nome.getText(), appello.getSelectedItem(), voto.getSelectedItem());        
        if (d.exists() != true) {
            d.newDoc();
            try {
                d.scrivi(e, i);
            } catch (IOException ex) {
                Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {            
                
            try {          
                d.scrivi(e, i);
            } catch (IOException ex) {
                Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
       i++;
       matricola.setText("");
       cognome.setText("");
       nome.setText("");
       appello.setSelectedIndex(0);
       voto.setSelectedIndex(0);
    }

Provo ad avviarlo e ricevo questo errore:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at studenti.Documento.scrivi(Documento.java:41)
at studenti.mainFrame.bottoneAggiungiActionPerformed( mainFrame.java:323)


Credo sia un problema dell'hashmap perché avevo scritto tutto con arraylist e funzionava.. Poi ho cambiato idea credendo fosse più corretto utilizzare l'hashmap e avere così la matricola come chiave