package totale.p240130; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.TreeSet; import java.util.Comparator; public class Catologo { private TreeSet catalogo = new TreeSet(new Comparator() { @Override public int compare(Articolo articolo1, Articolo articolo2) { // Prezzo non decrescente int cmp = Double.compare(articolo1.prezzo(), articolo2.prezzo()); if (cmp != 0) return cmp; // Nome crescente cmp = articolo1.nome().compareTo(articolo2.nome()); if (cmp != 0) return cmp; // Ritorna in base al ID return articolo1.id().compareTo(articolo2.id()); } }); // Metodo 1 public boolean add(Articolo art) { // Null check if (art == null) throw new NullPointerException(); // Verifica la presenza for (Articolo a : catalogo) { if (a.equals(art)) return false; } // Aggiunta return catalogo.add(art); } // Metodo 2 public Articolo cercaArticolo(String cod) { // Null check if (cod == null) throw new NullPointerException(); // Ricerca for (Articolo a : catalogo) { if (a.id().equals(cod)) return a; } return null; } // Metodo 3 public boolean cancellaArticolo(String cod) { // Null check if (cod == null) throw new NullPointerException(); // Iterator Iterator it = catalogo.iterator(); while (it.hasNext()) { Articolo cur = it.next(); if (!(cur.id().equals(cod))) continue; it.remove(); return true; } return false; } // Metodo 4 public List getArticoliSottoPrezzo(Double prezzo) { // Null check if (prezzo == null) throw new NullPointerException(); // Creazione dell'oggetto di tipo lista List lista = new LinkedList(); // Controllo sulla size if (catalogo.isEmpty()) return lista; // Se il catalogo non รจ empty for (Articolo art : catalogo) { Double curPrezzo = art.prezzo(); if (curPrezzo >= prezzo) break; lista.add(art); } return lista; } // Metodo 5 public Set ordinaByCodice() { Set articoliByCodice = new TreeSet(); articoliByCodice.addAll(catalogo); return articoliByCodice; } }