У меня возникла проблема, когда я использую TreeMap.Зачем нужно преобразовать из Integer в 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
}
Код выше дал мне ошибку компиляции. Однако, когда я меняю линию 8 на это:
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
}
Тогда это работает. Может ли кто-нибудь дать мне некоторые идеи, почему мне не нужно никаких изменений в строке 6, но нужно преобразовать Integer в int в строке 8?
Oh !!! Огромное спасибо! – youngyjd
Вам нужно определить тип там или был бы достаточно оператором алмаза (Map.Entry <>) (который был введен с Java 7), поскольку a.entrySet() уже определяет тип? Использование ничего, как в OP, конечно, вызывает ошибку. – Thomas
@Thomas - Вам нужно определить тип. Просто использование оператора алмаза даст вам ошибку времени компиляции. –