mac->arch
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
package parziale.p231110;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class Esercizio {
|
||||
|
||||
/*
|
||||
* Scrivere un metodo generico statico che prende in input
|
||||
* un array di elementi e restituisce il
|
||||
* numero di oggetti presenti all’interno dell’array che
|
||||
* non presentano duplicazioni. Quindi
|
||||
* utilizzare il metodo sul tipo Integer.
|
||||
* Esempio: se l’array fosse {10, 6, 5, 6, 7, 8, 6, 8, 10, 12, 10},
|
||||
* il metodo dovrebbe restituire
|
||||
* l’intero 3 (in grassetto i 3 elementi che non presentano duplicazioni).
|
||||
*/
|
||||
|
||||
public static int numeroOccorrenzeSingole(int[] array) {
|
||||
if (array == null) throw new NullPointerException();
|
||||
Map<Integer, Integer> lista = new HashMap<Integer, Integer>();
|
||||
for (Integer i : array) {
|
||||
if (lista.get(i) == null) lista.put(i, 1);
|
||||
else lista.put(i, lista.get(i) + 1);
|
||||
}
|
||||
|
||||
int counter = 0;
|
||||
for (Integer i : lista.keySet()) {
|
||||
if (lista.get(i) == 1) counter++;
|
||||
}
|
||||
|
||||
return counter;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
package parziale.p231110;
|
||||
|
||||
import java.lang.Integer;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.HashSet;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public class Libreria {
|
||||
|
||||
/*
|
||||
* Libreria che rappresenta una libreria
|
||||
* come una lista di libri senza duplicati e
|
||||
* supporta le seguenti operazioni.
|
||||
*/
|
||||
|
||||
Set<Libro> libreria = new HashSet<Libro>();
|
||||
|
||||
/*
|
||||
* Metodo n.1
|
||||
* inserire nella libreria un nuovo libro, se non è già presente,
|
||||
* dati in input l’ISBN e l’anno
|
||||
* di pubblicazione;
|
||||
*/
|
||||
|
||||
public boolean aggiungiLibro(Libro libro) {
|
||||
if (libro == null) throw new NullPointerException();
|
||||
return libreria.add(libro);
|
||||
}
|
||||
|
||||
/*
|
||||
* verificare se la libreria contiene un libro,
|
||||
* dato in input il suo ISBN;
|
||||
*/
|
||||
|
||||
public boolean contieneLibro(String ISBN) {
|
||||
return libreria.contains(new Libro(ISBN, 0));
|
||||
}
|
||||
|
||||
/*
|
||||
* cancellare dalla libreria un libro, se presente,
|
||||
* dato in input il suo ISBN;
|
||||
*/
|
||||
|
||||
public boolean rimuoviLibro(String ISBN) {
|
||||
return libreria.remove(new Libro(ISBN, 0));
|
||||
}
|
||||
|
||||
/*
|
||||
* ordinare la lista dei libri in ordine
|
||||
* crescente rispetto al codice ISBN;
|
||||
*/
|
||||
|
||||
public List<Libro> listaOrdinata() {
|
||||
List<Libro> listaOrdinata = new ArrayList<Libro>(libreria);
|
||||
if (libreria.isEmpty()) return listaOrdinata;
|
||||
Collections.sort(listaOrdinata, new Comparator<Libro>() {
|
||||
@Override
|
||||
public int compare(Libro l1, Libro l2) {
|
||||
String ISBN1 = l1.ISBN();
|
||||
String ISBN2 = l2.ISBN();
|
||||
|
||||
return ISBN1.compareTo(ISBN2);
|
||||
}
|
||||
});
|
||||
return listaOrdinata;
|
||||
}
|
||||
|
||||
/*
|
||||
* ordinare la lista dei libri in ordine decrescente
|
||||
* rispetto all’anno di prima pubblicazione;
|
||||
*/
|
||||
|
||||
public List<Libro> listaOrdinataPerAnnoDec() {
|
||||
List<Libro> listaOrdinata = new ArrayList<Libro>(libreria);
|
||||
if (libreria.isEmpty()) return listaOrdinata;
|
||||
Collections.sort(listaOrdinata, new Comparator<Libro>() {
|
||||
@Override
|
||||
public int compare(Libro l1, Libro l2) {
|
||||
int anno1 = l1.annoPubblicazione();
|
||||
int anno2 = l2.annoPubblicazione();
|
||||
|
||||
return Integer.compare(anno2, anno1);
|
||||
}
|
||||
});
|
||||
return listaOrdinata;
|
||||
}
|
||||
|
||||
/*
|
||||
* calcolare restituire in output, per ogni anno di
|
||||
* pubblicazione compreso tra il 2000 e il
|
||||
* 2023, il relativo numero di libri contenuti nella libreria.
|
||||
*/
|
||||
|
||||
public Map<Integer, Integer> numeroLibriTra2000e2023() {
|
||||
// Anno Libro (Integer), Numero di occorrenze (Integer)
|
||||
Map<Integer, Integer> mappaOrdinata = new TreeMap<Integer, Integer>();
|
||||
for (Libro libro : libreria) {
|
||||
int anno = libro.annoPubblicazione();
|
||||
if (!(anno >= 2000 && anno <= 2023)) continue;
|
||||
if (mappaOrdinata.get(anno) == null) mappaOrdinata.put(anno, 1);
|
||||
else mappaOrdinata.put(anno, 1 + mappaOrdinata.get(anno));
|
||||
}
|
||||
return mappaOrdinata;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package parziale.p231110;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Libro{
|
||||
|
||||
// Metodi di instanza
|
||||
private String ISBN;
|
||||
private int annoPubblicazione;
|
||||
|
||||
// Metodo costruttore
|
||||
public Libro(
|
||||
String ISBN,
|
||||
int annoPubblicazione) {
|
||||
this.ISBN = ISBN;
|
||||
this.annoPubblicazione = annoPubblicazione;
|
||||
}
|
||||
|
||||
// Metodi getter
|
||||
public String ISBN() {
|
||||
return ISBN;
|
||||
}
|
||||
|
||||
public int annoPubblicazione() {
|
||||
return annoPubblicazione;
|
||||
}
|
||||
|
||||
// Metodi di oggetto (fondamentali per HashSet usato in Libreria)
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == null) return false;
|
||||
if (obj == this) return true;
|
||||
if (!(obj instanceof Libro)) return false;
|
||||
|
||||
Libro extObj = (Libro) obj;
|
||||
|
||||
return this.ISBN.equals(extObj.ISBN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(ISBN);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user