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
Leave a Comment
Devi essere connesso per inviare un commento.