我有一个哈希表,其形式为<gameID, Achievement>
,其中Achievement是一个用户定义的对象,其中包含AchievementID,AchievementName和AchievementPoints:
[1003901=(901, Shoot 'em up, 100), 1001902=(902, Tango down, 15)]
我想基于整个游戏的AchievementPoints来累加值,因此在这种情况下,我将累加100和15。我尝试通过对for每个循环进行迭代,但是,我似乎无法弄清楚如何专门访问AchievementPoints成员并仅使用该值。有什么方法可以遍历哈希图并仅基于对象值的特定成员添加值?
编辑1:
抱歉,请澄清一下,我的gameID实际上是一个组合,其中前四个数字是实际的GameID,接下来的三个是成就ID。这样做是为了使ID保持唯一。这就是为什么我要同时添加两个
最佳答案
假设使用Java 8,如果您只想累加地图中的所有值,则可以执行以下操作:
achievementMap.values().stream().mapToInt(a -> a.getAchievmentPoints()).sum();
这将创建一个流,该流对地图中的所有值进行迭代,将
Achievement
实例转换为整数值,选择对象的achievementPoints
属性,然后对其求和。