Napotkano problem podczas korzystania z TreeMap.Dlaczego trzeba konwertować z Integer na 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
}
Powyższy kod dał mi błąd kompilacji. Jednak po zmianie wiersza 8 na to:
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
}
Następnie działa. Czy ktoś mógłby mi dać jakieś pomysły, dlaczego nie potrzebuję żadnych zmian w linii 6, ale muszę przekonwertować Integer na int w linii 8?
Och !!! Dziękuję bardzo! – youngyjd
Czy chcesz zdefiniować tam typ, czy też wystarczy operator diamentu (Map.Entry <>) (który został wprowadzony w Javie 7), ponieważ a.entrySet() już definiuje typ? Używanie czegokolwiek innego, jak w OP oczywiście powoduje błąd. – Thomas
@ Thomas - Musisz zdefiniować typ. Samo użycie operatora diamentowego da błąd podczas kompilacji. –