我有一个哈希表,其形式为<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属性,然后对其求和。

09-08 02:17