package preparazione_esame; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Esame9 { public static void main(String[] args) { HashMap>> mappa = new HashMap<>(); try (BufferedReader br = new BufferedReader(new FileReader("src/preparazione_esame/esame9.txt")); PrintWriter pw1 = new PrintWriter(new FileWriter("esame9-1.txt")); PrintWriter pw2 = new PrintWriter(new FileWriter("esame9-2.txt")); PrintWriter pw3 = new PrintWriter(new FileWriter("esame9-3.txt")); PrintWriter pw4 = new PrintWriter(new FileWriter("esame9-4.txt")); PrintWriter pw5 = new PrintWriter(new FileWriter("esame9-5.txt"))) { String linea = br.readLine(); String[] datiLinea; String nome = null; // per far star zitto il compilatore String[] valori; ArrayList valoriNum = null; // per far star zitto il compilatore ArrayList> vettori; while (linea != null) { if (!linea.isEmpty()) { datiLinea = linea.split(":"); if (datiLinea[0].trim().equals("NOME")) { nome = datiLinea[1].trim(); valoriNum = new ArrayList<>(); } else { valori = datiLinea[1].trim().split(","); for (String v : valori) { valoriNum.add(Integer.parseInt(v.trim())); } if (mappa.get(nome) == null) { vettori = new ArrayList<>(); vettori.add(valoriNum); mappa.put(nome, vettori); } else { mappa.get(nome).add(valoriNum); } } } linea = br.readLine(); } // verifica lettura for (String chi : mappa.keySet()) { System.out.print(chi + " : "); for (ArrayList vettore : mappa.get(chi)) { System.out.print(" [ "); for (Integer val : vettore) { System.out.print(val + " "); } System.out.print("] "); } System.out.println(); } // punto 1) System.out.println("=====> Punto 1)"); for (String chi : mappa.keySet()) { for (ArrayList vettore : mappa.get(chi)) { if (vettore.get(0) % 2 != 0) { System.out.print(" [ "); pw1.print(" [ "); for (Integer val : vettore) { System.out.print(val + " "); pw1.print(val + " "); } System.out.print("] "); pw1.print("] "); } } System.out.println(); } // punto 2) System.out.println("=====> Punto 2)"); boolean isPalyndrome; for (String chi : mappa.keySet()) { for (ArrayList vettore : mappa.get(chi)) { isPalyndrome = true; for (int i = 0; i < vettore.size(); i++) { if (vettore.get(i) != vettore.get(vettore.size() - 1 - i)) { isPalyndrome = false; break; } } if (isPalyndrome) { System.out.print(" [ "); pw2.print(" [ "); for (Integer val : vettore) { System.out.print(val + " "); pw2.print(val + " "); } System.out.print("] "); pw2.print("] "); } } System.out.println(); } // punto 3) System.out.println("=====> Punto 3)"); int sum; for (String chi : mappa.keySet()) { sum = 0; for (ArrayList vettore : mappa.get(chi)) { for (Integer val : vettore) { sum += val; } } System.out.println(chi + " : " + sum); pw3.println(chi + " : " + sum); } // punto 4) System.out.println("=====> Punto 4)"); ArrayList numeri = new ArrayList<>(); for (String chi : mappa.keySet()) { for (ArrayList vettore : mappa.get(chi)) { for (Integer val : vettore) { if (!numeri.contains(val)) { numeri.add(val); } } } } boolean found; for (Integer num : numeri) { System.out.print(num + ": "); pw4.print(num + ": "); for (String chi : mappa.keySet()) { found = false; for (ArrayList vettore : mappa.get(chi)) { for (Integer val : vettore) { if (num == val) { System.out.print(chi + " "); pw4.print(chi + " "); found = true; break; } } if (found) { break; } } } System.out.println(); pw4.println(); } // punto 5) System.out.println("=====> Punto 5)"); HashMap> numVettori = new HashMap<>(); ArrayList nomi; for (String chi : mappa.keySet()) { if (numVettori.get(mappa.get(chi).size()) == null) { nomi = new ArrayList<>(); nomi.add(chi); numVettori.put(mappa.get(chi).size(), nomi); } else { numVettori.get(mappa.get(chi).size()).add(chi); } } ArrayList chiaviOrdinate = new ArrayList<>(); chiaviOrdinate.addAll(numVettori.keySet()); Collections.sort(chiaviOrdinate); Collections.reverse(chiaviOrdinate); for (Integer nVett : chiaviOrdinate) { System.out.print(nVett + ") "); pw5.print(nVett + ") "); for (String chi : numVettori.get(nVett)) { System.out.print(chi + " "); pw5.print(chi + " "); } System.out.println(); pw5.println(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }