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 - 当两个线程尝试修改/访问 Concurrenthashmap 中的同一个键时会发生什么?

java - 在 Java 中散列多个键的最佳方法

java - 如何不对循环内的无效输入增加循环计数器

java - 对 void 打印方法使用递归

java - 通过在标记末尾添加 "/"来格式化 XMl 文档

java - 如何仅使用 TestPropertySource 加载数据库一次并在多个测试类中使用它?

java - 运行 JUnit 测试时出错(JPA、Derby、Hibernate、Guice)

java - 如何在java中使用map创建JSONArray

java - 以正确的格式管理/填充 HashMap 中的数据

arrays - 什么是最好的(实践)方法来存储有关单词在文本中的出现和位置的数据以便快速访问?