Почему я не могу создать EnumMap
вроде этого:Хранить примитивные значения в качестве EnumMap
EnumMap<FunkyTrolls, int> amountMap;
Я хочу, чтобы подсчитать и сохранить количество троллей каждого типа. Каков хороший способ сделать это?
Почему я не могу создать EnumMap
вроде этого:Хранить примитивные значения в качестве EnumMap
EnumMap<FunkyTrolls, int> amountMap;
Я хочу, чтобы подсчитать и сохранить количество троллей каждого типа. Каков хороший способ сделать это?
Просто используйте Integer
. Generics работает только с объектами, а не с примитивными типами, но Java теперь имеет авто-бокс и -боксинг.
Это должно работать:
Map<FunkyTrolls, Integer> amountMap = new EnumMap<FunkyTrolls, Integer>();
amountMap.put(FunkyTrolls.VERY_FUNKY_TROLL, 100);
Итак, Integer - это класс-оболочка для примитивного int? Что такое авто-бокс? – Moberg
'Integer' является объектным вариантом' int'. Авто-бокс «преобразует» int в экземпляр объекта Integer компилятором (так что вы, кажется, храните 'int', но преобразуется в' Integer'). Обратите внимание, что 'null', вероятно, может быть сохранено в' Map', но 'int', очевидно, не может быть null (как не ссылка на объект вообще, просто значение). Я дам вам угадать авто-unboxing :) –
Спасибо. Хотя я только заметил, что хочу делать ++ для сумм (в то время как петля над фанки троллей). Вероятно, карта не так хороша для этого ... – Moberg
с помощью EnumMap вы уже используете, но с Целые? – greedybuddha
Возможно, вам лучше сделать каждое перечисление, создавая небольшой 'int', а затем использовать массив вместо карты. – dasblinkenlight