Advertisement
AL4ST4I2

ex 1 - luglio 2016

Sep 5th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.54 KB | None | 0 0
  1. package esercizio1;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6.  
  7. public class Esercizio1 {
  8.  
  9.     public int[] valori_comuni(int[][]... m){
  10.        
  11.         // vettore di appoggio che contiene valori senza duplicati
  12.         ArrayList<Integer> baseNoDuplicati = new ArrayList<>();
  13.         // mappa che contiene <valore, occorenze del valore>
  14.         Map<Integer, Integer> valori = new HashMap<Integer, Integer>();
  15.        
  16.        
  17.         for(int[][] l : m){
  18.            
  19.             // mi creo prima, per ogni m, un vettore che contenga i valori di m senza duplicati
  20.             for (int i = 0; i < l.length; i++){
  21.                 for (int j = 0; j < l[i].length; j++){
  22.                     if (!baseNoDuplicati.contains(l[i][j])){
  23.                         baseNoDuplicati.add(l[i][j]);
  24.                     }
  25.                 }
  26.             }
  27.            
  28.             // ogni valore del vettore lo inserisco nella mappa:
  29.             // - se non era contenuto nella mappa, viene inserito per la prima volta e la
  30.             //   sua occorrenza è 1.
  31.             // - se era gia contenuto nella mappa si aggiorna il valore delle occorenze a +1
  32.            
  33.             for (Integer i : baseNoDuplicati){
  34.                 if (!valori.containsKey(i)){
  35.                     valori.put(i, 1);
  36.                 } else {
  37.                     valori.put(i, valori.get(i)+1);
  38.                 }
  39.             }
  40.            
  41.             // ripulisco il vettore per le iterazioni successive
  42.             baseNoDuplicati.clear();
  43.            
  44.         }
  45.        
  46.         //System.out.println("Debug hashmap: ");
  47.         //valori.forEach((k,v)-> System.out.println(k+", "+v));
  48.         //System.out.println("fine debug hashmap");
  49.        
  50.         // inserisco nella lista di ritorno tutte le chiavi il cui valore è maggiore di
  51.         // al numero di liste m in input
  52.         // PS: ho usato baseNoDuplicati come lista di ritorno per non creare un nuovo vettore  
  53.         for (Map.Entry<Integer, Integer> entry : valori.entrySet())
  54.         {
  55.             if (entry.getValue() == m.length)
  56.                 baseNoDuplicati.add(entry.getKey());
  57.         }
  58.        
  59.         //System.out.println("Array finale: " + baseNoDuplicati.toString());   
  60.  
  61.         // nel ritorno con conversione da arraylist<Integer> a int[]
  62.         // cmq questa conversione al compito non verrebbe accettata perché supportata solo
  63.         // da java 8 e al lab abbiamo a malapena java 5 o 6. quindi devi la classica copia con i for
  64.         return baseNoDuplicati.stream().mapToInt(i -> i).toArray();
  65.     }
  66.    
  67.     public static void main(String[] args){
  68.         int[][] m1 = new int[][]{{9, 2}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}, {8, 8}};
  69.         int[][] m2 = new int[][]{{3, 4, 7, 4}, {9, 6, 7, 4}, {7, 8, 7, 4}};
  70.         int[][] m3 = new int[][]{{9, 9}, {9, 6}, {7, 8}};
  71.        
  72.         new Esercizio1().valori_comuni(m1, m2, m3);
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement