Catalogare libri

Nel seguente esempio viene richiesto all’utente di inserire tre libri specificando l’ autore, il titolo e la data di pubblicazione, successivamente verrano riordinati per data decrescente.
Per fare una panoramica di vari metodi i dati inseriti verranno aggiunti in un Hashmap, convertiti in Arraylist ed infine riordinati.

import java.util.Collections;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Comparator;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

class Catalogo {

    private final String id;
    private String autore;
    private String titolo;
    private int data;

    public Catalogo(String id, String autore, String titolo, int data) {
        this.id = id;
        this.autore = autore;
        this.titolo = titolo;
        this.data = data;
    }

    public String getId(){
        return id;
    }
    public String getAutore(){
        return autore;
    }
    public String getTitolo(){
        return titolo;
    }
    public int getData(){
        return data;
    }

    @Override
    public String toString() {
        return id + " - "+ autore +" - "+ titolo;
    }
}

public class Libro {

    public static void main(String[] args) throws IOException {

        HashMap<String, Catalogo> libri = new HashMap<>();
        try {
            InputStreamReader input = new InputStreamReader(System.in);
            BufferedReader reader = new BufferedReader(input);
            System.out.println("Benvenuto nella libreria digitale");
            for (int i = 1; i <= 3; i++) {
                System.out.println("Libro n " + i );
                System.out.print("Autore: ");
                String autore = reader.readLine();
                System.out.print("Titolo: ");
                String titolo = reader.readLine();
                System.out.print("Anno di pubblicazione: ");
                String anno = reader.readLine();
                String id = anno;
                int data = Integer.parseInt(anno);
                Catalogo libro = new Catalogo(id,autore,titolo,data);
                libri.put(id , libro);
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        ArrayList<Catalogo> repertorio = convertHMtoAL(libri);
        System.out.println("Ordinamento per data decrescente:");
        printLista(repertorio);
    }//end main


    static ArrayList<Catalogo> convertHMtoAL(HashMap<String, Catalogo> libri){

        ArrayList<Catalogo> listRepertorio = new ArrayList(libri.values());
        Collections.sort(listRepertorio, new CatalogoComparator());
        return listRepertorio;
    }
    
    static void printLista(ArrayList<Catalogo> listRepertorio){
        int size = listRepertorio.size();
        for (int i=0; i<size; i++){
            String catalogoString = listRepertorio.get(i).toString();
            System.out.println(catalogoString);
        }
    }
    
    static class CatalogoComparator implements Comparator<Catalogo> {
    
        @Override
        public int compare(Catalogo oA, Catalogo oB){
            Integer annoA = oA.getData();
            Integer annoB = oB.getData();
            return annoB.compareTo(annoA);
        }
    }
}

Output video:

Benvenuto nella libreria digitale
Libro n 1
Autore: Isaac Asimov
Titolo: Io, robot
Anno di pubblicazione: 1963
Libro n 2
Autore: Arthur C. Clarke
Titolo: Le guide del tramonto
Anno di pubblicazione: 1955
Libro n 3
Autore: William Gibson
Titolo: Neuromante
Anno di pubblicazione: 1986
Ordinamento per data decrescente:
1986 – William Gibson – Neuromante
1963 – Isaac Asimov – Io, robot
1955 – Arthur C. Clarke – Le guide del tramonto

Tags:
Leave a Comment