ES: data una Map, ottenere il suo inverso. PROBLEMA: stampa vuoto

di il
1 risposte

ES: data una Map, ottenere il suo inverso. PROBLEMA: stampa vuoto

Esercizio: data una map ottenere l'inverso

Testo esercizio:
import java.util.*;

public class Due {
static <K , V> Map< V , Set<K> > invertMap(Map< ?extends K , ?extends V> mp){

Map<V , Set<K>> aNewMap = new HashMap<>();
for (Map.Entry<? extends K, ? extends V> entry : mp.entrySet()) {

K key = (K)entry.getKey();
V val = (V)entry.getValue();

//System.out.println("Key : " + key + "Value : val" + val);

if(!aNewMap.containsKey(val)){
Set<K> newSet = new HashSet<>();
newSet.add(key);
aNewMap.put(val , newSet );
}
else {
Set<K> lastSet = aNewMap.get(val);
lastSet.add(key);
aNewMap.put(val , lastSet);

}
}

return aNewMap;
}



public static void main(String[] args) {
String [] as = {"uno","due","uno","due","tre","quattro","uno"};
Map<String,Integer> ms = new HashMap<String,Integer>();
Map<Integer,Set<String>> i_ms = invertMap(ms);
System.out.println("map obtained inverting "+ ms + ":\n"+ i_ms);
}
}


Compilando sul terminale però mi stampa: map obtained inverting {}
{}

1 Risposte

  • Re: ES: data una Map, ottenere il suo inverso. PROBLEMA: stampa vuoto

    ludovica.cannas ha scritto:


    
    		Map<String,Integer> ms = new HashMap<String,Integer>();
    		Map<Integer,Set<String>> i_ms = invertMap(ms);
    Compilando sul terminale però mi stampa: map obtained inverting {}
    {}
    La mappa ms che passi a invertMap ... è vuota.


    P.S. invertMap si può scrivere leggermente meglio.
Devi accedere o registrarti per scrivere nel forum
1 risposte