0

Estoy con un ejercicio de clase en el cual tengo que mostrar los elementos de un arraylist que está dentro de un fichero. pero me da excepción de nullpointer en la linea que está escrito titulo_y_autor = libro.getTitulo() + " | " + libro.getAutor();

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at biblioteca.Metodos.verColeccion(Metodos.java:107) at biblioteca.BibliotecaPrincipal.btnListarActionPerformed(BibliotecaPrincipal.java:670)

 public static JList verColeccion(HashMap biblio,File fichero) {

        DefaultListModel<String> modeloLista = new DefaultListModel<>();
        JList lista = new JList(modeloLista);
        String titulo_y_autor;

        Iterator iterador_biblioteca = biblio.entrySet().iterator();

        while (iterador_biblioteca.hasNext()) {
            Libros libro = new Libros();
            libro = (Libros) biblio.get(iterador_biblioteca.next());
            titulo_y_autor = libro.getTitulo() + " | " + libro.getAutor();
            modeloLista.addElement(titulo_y_autor);
        }
    return lista;
    }
DevMind
  • 5,025
  • 11
  • 29
  • 60
Flowcou
  • 459
  • 5
  • 15
  • No entiendo tu código, ¿al crear `biblio` no lo llenaste con objetos del tipo `Libros`? ¿Por qué entonces esto: `Libros libro = new Libros();` y luego esto: `libro = (Libros) biblio.get(iterador_biblioteca.next());`? ¿Podrías mostrar cómo está constituido tu `HashMap` y dar más detalles de lo que quieres hacer? Da la impresión de que aplicas una lógica inversa en tu código. – A. Cedano Mar 21 '19 at 12:15
  • Si, tiene datos de la clase libros ya metidos. Entiendo que crear objeto Libros otra vez es ilógico. Lo que pretendo hacer es listar en un Jlist los libros que hay metidos en el Hahsmap – Flowcou Mar 21 '19 at 12:22
  • Tu problema existe porque no usas bien los genericos de Java. Tus tipos son ambiguos, así apuesto que tu HashMap no es un HashMap, sin embargo usas un Set> y luego buscas con los Entry como key en el HashMap. Define los tipos como corresponde y vas a encontrar tu error. – Stefan Nolde Jun 11 '19 at 03:18

1 Answers1

0

Ni siquiera necesitas un iterador para lo que quieres hacer.

Si biblio es un HashMap con objetos del tipo Libros, puedes hacer simplemente esto:

for (Libros libro : biblio.values()) {
    titulo_y_autor = libro.getTitulo() + " | " + libro.getAutor();
    modeloLista.addElement(titulo_y_autor);
}
A. Cedano
  • 86,578
  • 19
  • 122
  • 221
  • 1
    Creo que su problema viene porque tiene guardado en su HashMap un objeto a null. Con esto seguiría dando el mismo problema. – JDev Jun 07 '19 at 10:56