Ich habe ein Problem gefunden, wenn ich TreeMap verwende.Warum muss ich von Integer in int konvertieren
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
}
Der obige Code gab mir einen Kompilierungsfehler. Allerdings, wenn ich die Zeile 8 zu diesem ändern:
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
}
Dann funktioniert es. Könnte mir jemand ein paar Ideen geben, warum ich in Zeile 6 keine Änderung brauche, aber in Zeile 8 eine ganze Zahl in int umwandeln muss?
Oh !!! Vielen Dank! – youngyjd
Müssen Sie den Typ dort definieren oder wäre der Diamantoperator (Map.Entry <>) genug (was mit Java 7 eingeführt wurde), da a.entrySet() den Typ bereits definiert? Nichts wie im OP zu benutzen, verursacht natürlich den Fehler. – Thomas
@Thomas - Sie müssen den Typ definieren. Wenn Sie nur den Diamant-Operator verwenden, erhalten Sie einen Kompilierungsfehler. –