Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package esercizio1;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Map;
- public class Esercizio1 {
- public int[] valori_comuni(int[][]... m){
- // vettore di appoggio che contiene valori senza duplicati
- ArrayList<Integer> baseNoDuplicati = new ArrayList<>();
- // mappa che contiene <valore, occorenze del valore>
- Map<Integer, Integer> valori = new HashMap<Integer, Integer>();
- for(int[][] l : m){
- // mi creo prima, per ogni m, un vettore che contenga i valori di m senza duplicati
- for (int i = 0; i < l.length; i++){
- for (int j = 0; j < l[i].length; j++){
- if (!baseNoDuplicati.contains(l[i][j])){
- baseNoDuplicati.add(l[i][j]);
- }
- }
- }
- // ogni valore del vettore lo inserisco nella mappa:
- // - se non era contenuto nella mappa, viene inserito per la prima volta e la
- // sua occorrenza è 1.
- // - se era gia contenuto nella mappa si aggiorna il valore delle occorenze a +1
- for (Integer i : baseNoDuplicati){
- if (!valori.containsKey(i)){
- valori.put(i, 1);
- } else {
- valori.put(i, valori.get(i)+1);
- }
- }
- // ripulisco il vettore per le iterazioni successive
- baseNoDuplicati.clear();
- }
- //System.out.println("Debug hashmap: ");
- //valori.forEach((k,v)-> System.out.println(k+", "+v));
- //System.out.println("fine debug hashmap");
- // inserisco nella lista di ritorno tutte le chiavi il cui valore è maggiore di
- // al numero di liste m in input
- // PS: ho usato baseNoDuplicati come lista di ritorno per non creare un nuovo vettore
- for (Map.Entry<Integer, Integer> entry : valori.entrySet())
- {
- if (entry.getValue() == m.length)
- baseNoDuplicati.add(entry.getKey());
- }
- //System.out.println("Array finale: " + baseNoDuplicati.toString());
- // nel ritorno con conversione da arraylist<Integer> a int[]
- // cmq questa conversione al compito non verrebbe accettata perché supportata solo
- // da java 8 e al lab abbiamo a malapena java 5 o 6. quindi devi la classica copia con i for
- return baseNoDuplicati.stream().mapToInt(i -> i).toArray();
- }
- public static void main(String[] args){
- 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}};
- int[][] m2 = new int[][]{{3, 4, 7, 4}, {9, 6, 7, 4}, {7, 8, 7, 4}};
- int[][] m3 = new int[][]{{9, 9}, {9, 6}, {7, 8}};
- new Esercizio1().valori_comuni(m1, m2, m3);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement