Ho riscontrato un problema quando utilizzo TreeMap.Perché è necessario convertire da Integer a int
Map<Integer, Integer> a = new TreeMap<Integer, Integer>();
a.put(5,1);
a.put(3,2);
a.put(4,3);
int target = 7;
System.out.println(target - a.get(5)); //line 6
for(Map.Entry b : a.entrySet()){
System.out.println(target - b.getValue()); //line 8
}
Il codice sopra riportato mi ha fornito un errore di compilazione. Tuttavia, quando cambio la linea 8 a questa:
Map<Integer, Integer> a = new TreeMap<Integer, Integer>();
a.put(5,1);
a.put(3,2);
a.put(4,3);
int target = 7;
System.out.println(target - a.get(5)); //line 6
for(Map.Entry b : a.entrySet()){
System.out.println(target - (int) b.getValue()); //line 8
}
Quindi funziona. Qualcuno potrebbe darmi qualche idea del perché non ho bisogno di alcun cambiamento nella riga 6, ma ho bisogno di convertire un intero in int nella riga 8?
Oh !!! Grazie mille! – youngyjd
Hai bisogno di definire il tipo lì o l'operatore diamante (Map.Entry <>) è sufficiente (che è stato introdotto con Java 7) come a.entrySet() già definisce il tipo? L'uso di nulla come nell'OP ovviamente causa l'errore. – Thomas
@Thomas: è necessario definire il tipo. Usare semplicemente l'operatore diamond ti darà un errore in fase di compilazione. –