【问题标题】:Store primitive values in an EnumMap在 EnumMap 中存储原始值
【发布时间】:2013-05-21 01:19:20
【问题描述】:

为什么我不能像这样创建EnumMap

EnumMap<FunkyTrolls, int> amountMap;

我想计算并保存每种类型的巨魔数量。这样做的好方法是什么?

【问题讨论】:

  • 通过使用您已经在使用的 EnumMap,但使用整数?
  • 最好让每个枚举产生一个小的int,然后使用数组而不是映射。

标签: java enums enum-map


【解决方案1】:

只需使用Integer。泛型仅适用于对象,不适用于原始类型,但 Java 现在具有自动装箱和取消装箱功能。

这应该可行:

Map<FunkyTrolls, Integer> amountMap = new EnumMap<FunkyTrolls, Integer>();
amountMap.put(FunkyTrolls.VERY_FUNKY_TROLL, 100);

【讨论】:

  • 那么 Integer 是原始 int 的包装类吗?什么是自动装箱?
  • Integerint 的对象变体。自动装箱是由编译器将 int “转换”为 Integer 对象实例(因此您似乎存储了 int,但它被转换为 Integer)。请注意null 可能存储在Map 中,但int 显然不能为空(因为根本不是对象引用,只是一个值)。我会让你猜猜自动拆箱:)
  • 谢谢。虽然我只是注意到我想为数量做 ++(在循环播放时髦的巨魔时)。毕竟,地图可能不太适合这个......
  • 视情况而定,如果您的代码真的应该运行超快,那么您可能会遇到麻烦。否则,您只需遍历键,获取值,将其递增并放回原处。
  • 遍历键?我可以只使用 amountMap.put(VERY_FUNKY_TROLL,(amountMap.get(VERY_FUNKY_TROLL)+1)) 吗?如果确保这个时髦的巨魔已经有一个条目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2013-06-03
  • 2016-05-22
  • 2018-08-16
  • 1970-01-01
  • 2013-01-29
相关资源
最近更新 更多