java - 使用用户定义的对象作为值从 HashMap 中添加特定值

标签 java hashmap

我有一个散列图,其形式为 <gameID, Achievement>其中Achievement 是一个用户定义的对象,它包含AchievementID、AchievementName 和AchievementPoints:

[1003901=(901, Shoot 'em up, 100), 1001902=(902, Tango down, 15)]

我想根据整个游戏的 AchievementPoints 添加值,因此在本例中,我将添加 100 和 15。我尝试使用 foreach 循环进行迭代,但是,我似乎无法找出如何专门访问 AchievementPoints 成员并使用该值。有没有办法只迭代 HashMap 并根据对象值的特定成员添加值?

编辑1:
抱歉,澄清一下,我的 gameID 实际上是一个组合,其中前四个数字是实际的 gameID,接下来的 3 个数字是成就 ID。这样做是为了保持 id 的唯一性。这就是为什么我要添加这两个

最佳答案

假设 Java 8,如果您只是想将 map 中的所有值相加,您可以执行以下操作:

achievementMap.values().stream().mapToInt(a -> a.getAchievmentPoints()).sum();

这将创建一个迭代映射中所有值的流,将 Achievement 实例转换为整数值,并选择对象的 achievementPoints 属性然后总结一下。

关于java - 使用用户定义的对象作为值从 HashMap 中添加特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35117791/

相关文章:

java - LinkedHashMap 的缺点?

java - 将子类型的 HashMap 转换为父类(super class)型的 HashMap

java - HashMap Java 避免冲突的例子

java - 如何根据 HashMap 的键和值检查两个输入?

java - 使用现有 GoogleMap API 的 Android MapView

java - 将java中的指数值转换为数字格式

java - 非常困难的 XML -> JSON 按顺序解析 3 个数组,然后回到第一个数组循环另一个数组

Java try catch 返回 false 变量

java - Android Parcelable 对象传递给 Activity 但不传递给服务

java - splitPane 上的 Swing 行为