Problema HashMap

seeker clouds - 10/01/2020

Salve a tutti, ho un problema riguardo un progetto in java.

 

Qui di seguito, i codici delle varie classi: 

----------------------------------------------------------------------------------------------------------------------------------------

La classe Test: non fa altro che inizializzare una lista di libri richiamando la classe "Libro"

import java.util.ArrayList;

import java.util.List;

 

public class Test {

 

public static List<Libro> getDatiTest() {

 

List<Libro> listlibri = new ArrayList<Libro>();

 

listlibri.add(new Libro("Il signore degli anelli", "Fantasy", 1976));

listlibri.add(new Libro("Crypto","Thriller", 2000));

listlibri.add(new Libro("Il sigillo perduto", "Thriller", 2002));

 

return listlibri;

}

}

----------------------------------------------------------------------------------------------------------------------------------------

Classe Libro : 

 

public class Libro implements Comparable<Libro>{

 

String titolo, genere;

int anno;

 

public static void main(String[] args) {

 

}

 

public Libro(String titolo, String genere, int anno) {

 

this.titolo = titolo;

this.genere = genere;

this.anno = anno;

}

 

public Libro() {

 

 

}

 

public String getTitolo() {

return titolo;

}

 

public void setTitolo(String titolo) {

this.titolo = titolo;

}

 

public String getGenere() {

return genere;

}

 

public void setGenere(String genere) {

this.genere = genere;

}

 

public int getAnno() {

return anno;

}

 

public void setAnno(int anno) {

this.anno = anno;

}

 

public String toString() {

 

return "\nTitolo: "+titolo+"\nGenere: "+genere+"\nAnno: "+anno+"\n";

}

 

@Override

public int compareTo(Libro listaLibri) {

 

int ascendente = this.getTitolo().compareTo(listaLibri.getTitolo());

int discendente = 0;

if (ascendente < 0) {

discendente = -1;

} else if (ascendente > 0) {

discendente = 0;

} else {

ascendente = 0;

discendente = 1;

}

 

return discendente;

}

 

}

----------------------------------------------------------------------------------------------------------------------------------------

La classe Scaffale : 

public class Scaffale {

 

public ArrayList<Libro> libri = new ArrayList<>();

 

public static void main(String[] args) {

 

}

 

// public void aggiungiLibro(Libro libro) {

//

// libri.add(libro);

// }

 

public ArrayList<Libro> ordinamentoTitolo(ArrayList<Libro> libri) {

Collections.sort(libri);

return libri;

}

}

----------------------------------------------------------------------------------------------------------------------------------------

La classe Sala: 

public class Sala {

 

public TreeMap<Integer, Scaffale> scaffali = new TreeMap<>();

 

public static void main(String[] args) {

 

Libro libro = new Libro();

Sala sala = new Sala();

// for (i=1800) {

// CREZIONE DI SCAFFALI NEL DA UN ANNO AD UN ALTRO ANNO

// }

// sala.scaffali.put(1976, new Scaffale());

// sala.scaffali.put(2000, new Scaffale());

// sala.scaffali.put(2002, new Scaffale());

//

List<Libro> datiTest = Test.getDatiTest();

Scaffale scaffale = new Scaffale();

scaffale.libri.addAll(datiTest);

System.out.println("DATI TEST\n"+" "+ scaffale.libri);

 

// per ogni libro nei dati di test

for (int i = 0; i < scaffale.libri.size(); i++) {

// aggiungi nella sala

sala.aggiungiLibro(libro);

System.out.println("LIBRO\n"+" "+ libro);

Integer key = 0;

sala.scaffali.put(key, new Scaffale());

for (Map.Entry<Integer, Scaffale> entry : sala.scaffali.entrySet()) {

System.out.println("DENTRO SCAFFALE\n" + "Anno scaffale:  " + entry.getKey() + " "

+ entry.getValue().libri + "\n");

}

}

// for (int i = 0; i < scaffale.libri.size(); i++ /*int i =0; i < sala.scaffali.size(); i ++*/) {

// if (scaffale.libri.get(i).anno == 1976 /*sala.scaffali.containsValue(1976)*/) {

// Scaffale scaffale2;

// sala.scaffali.putIfAbsent(1976, scaffale2 = new Scaffale());

// test.aggiungi(scaffale2);

// scaffale.ordinamentoTitolo(scaffale2.libri);

// }

// }

// for (Map.Entry<Integer, Scaffale> entry : sala.scaffali.entrySet()) {

// System.out.println("Anno scaffale:  " + entry.getKey() +" " + entry.getValue().libri + "\n");

// }

// System.out.println(" "+ sala.scaffali.keySet());

}

 

public Libro aggiungiLibro(Libro libro) {

 

// DEVE RICEVERE IN INGRESSO UN LIBRO

// RESTITUIRE UN LIBRO

 

// POSIZIONARLO DENTRO LA SALA

return libro;

}

 

}

----------------------------------------------------------------------------------------------------------------------------------------

In sostanza è un programma di una gestione di biblioteca.

Una biblioteca è formata da una sala dove vi sono gli scaffali identificati per anno dove vi sono contenuti i libri disposti negli scaffali in base all'anno ed in ordine per titolo. 
Subito dopo aver risolto questo problema, dovrei riuscire a creare una classe biblioteca dove all'interno ha un'altra hashmap chiamata "sale" dove contiene le varie sale dove andare a ricavare i vari scaffali ed i vari libri a seconda del genere e dell'anno corrispondente....

 

Il mio problema è questo: non so come diavolo fare all'interno della classe "Sala" ad inserire i libri all'interno dell'hashmap "scaffali" in base all'anno...son due giorni che ci sbatto ma non riesco a trovare la soluzione.

Grazie a chi mi potrà dare una mano :)

Javajob.it © 2019 - Javajob.it è un progetto realizzato da Gsoftware srls