Aggiunta di parziale

This commit is contained in:
Emanuele Slusarz
2026-05-10 01:29:41 +02:00
parent bdbe04ec0d
commit 56d6c1e9d6
531 changed files with 310295 additions and 1927 deletions
+125 -1
View File
@@ -1,8 +1,13 @@
package parziale.p251110;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.TreeMap;
public class Clinica {
@@ -35,12 +40,131 @@ public class Clinica {
Paziente current = lit.next();
int cmp = current.compareTo(paziente);
if (cmp > 0) {
lit.previous();
lit.add(paziente);
return true;
}
}
return false;
lit.add(paziente);
return true;
}
// 3. Dimissione
public Paziente dimettiPaziente(String id, int annoNascita) {
if (id == null || annoNascita <= 0) return null;
Paziente tmp = new Paziente(id, annoNascita);
Iterator<Paziente> iterator = pazienti.iterator();
while (iterator.hasNext()) {
Paziente current = iterator.next();
int cmp = current.compareTo(tmp);
if (cmp == 0) {
// Paziente da rimuovere
iterator.remove();
return current;
}
if (cmp > 0) return null;
}
return null;
}
// 4. Età media
public int etaMedia() {
if (pazienti.isEmpty()) return 0;
int currentDate = LocalDate.now().getYear();
int avg = 0;
Iterator<Paziente> it = pazienti.iterator();
while (it.hasNext()) {
int ageYear = currentDate - it.next().getAnnoNascita();
avg += ageYear;
}
return avg / pazienti.size();
}
// 5. Età più rappresenta
public int etaMediaPiuRappresentata() {
if (pazienti.isEmpty()) return 0;
int currentDate = LocalDate.now().getYear();
TreeMap<Integer, Integer> listaEta = new TreeMap<Integer, Integer>();
Iterator<Paziente> it = pazienti.iterator();
while (it.hasNext()) {
Paziente current = it.next();
int currentAge = currentDate - current.getAnnoNascita();
if (listaEta.get(currentAge) == null) listaEta.put(currentAge, 1);
else listaEta.put(currentAge, listaEta.get(currentAge) + 1);
}
int maxAge = 0;
int maxFrequency = 0;
for (Integer i : listaEta.keySet()) {
int currentFrequency = listaEta.get(i);
if (currentFrequency > maxFrequency) {
maxFrequency = currentFrequency;
maxAge = i;
}
}
return maxAge;
}
// 6. Ricoverati ordinati per codice
public ArrayList<Paziente> ricoveratiOrdinatiPerCodice() {
ArrayList<Paziente> ricoverati = new ArrayList<Paziente>(pazienti);
ricoverati.sort(new Comparator<Paziente>() {
@Override
public int compare(Paziente p1, Paziente p2) {
String id1 = p1.getId();
String id2 = p2.getId();
return id1.compareTo(id2);
}
});
return ricoverati;
}
// 7. Distribuzione pazienti per anno di nascita
public Map<Integer, Integer> pazientiPerAnnoDiNascita() {
// AnnoNascita, NumeroPazienti
Map<Integer, Integer> pazientiPerAnnoDiNascita = new TreeMap<Integer, Integer>(); // Si usa TreeMap per avere una vista già ordinata di anni
if (pazienti.isEmpty()) return pazientiPerAnnoDiNascita;
Iterator<Paziente> it = pazienti.iterator();
while (it.hasNext()) {
Paziente current = it.next();
int annoNascita = current.getAnnoNascita();
if (pazientiPerAnnoDiNascita.get(annoNascita) == null) pazientiPerAnnoDiNascita.put(annoNascita, 1);
else pazientiPerAnnoDiNascita.put(annoNascita, pazientiPerAnnoDiNascita.get(annoNascita) + 1);
}
return pazientiPerAnnoDiNascita;
}
public static List<Clinica> ordinaListaClinicaPerNumeroPazienti(List <Clinica> cliniche) {
if (cliniche == null) throw new NullPointerException();
cliniche.sort(new Comparator<Clinica>() {
@Override
public int compare(Clinica c1, Clinica c2) {
int pazienti1 = c1.pazienti.size();
int pazienti2 = c2.pazienti.size();
return pazienti1 - pazienti2;
}
});
return cliniche;
}
}