This commit is contained in:
Emanuele Slusarz
2026-05-23 20:37:48 +02:00
parent 30b66dd99b
commit 66f053aba3
25 changed files with 1832 additions and 481 deletions
+87
View File
@@ -0,0 +1,87 @@
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<Articolo> catalogo = new TreeSet<Articolo>(new Comparator<Articolo>() {
@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<Articolo> 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<Articolo> getArticoliSottoPrezzo(Double prezzo) {
// Null check
if (prezzo == null) throw new NullPointerException();
// Creazione dell'oggetto di tipo lista
List<Articolo> lista = new LinkedList<Articolo>();
// 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<Articolo> ordinaByCodice() {
Set<Articolo> articoliByCodice = new TreeSet<Articolo>();
articoliByCodice.addAll(catalogo);
return articoliByCodice;
}
}