Java 如何使用地图进行计算?

Java 如何使用地图进行计算?,java,collections,Java,Collections,我正在为班级做一个节目。使用树形图存储IDs字符串键和收入金额双倍值。我正在使用扫描仪从文本文件导入值。目前我的问题是,我需要累积值,而不是用最后读取的值覆盖。所以我的问题是,如何使用地图来进行这样的计算?任何帮助都将不胜感激。向地图添加新值时,如果密钥已存在,您可以获取相关值,向其添加新值,然后将其放回地图。例如: // Assuming that key and value were read from your file, and that // myMap is declared as

我正在为班级做一个节目。使用树形图存储IDs字符串键和收入金额双倍值。我正在使用扫描仪从文本文件导入值。目前我的问题是,我需要累积值,而不是用最后读取的值覆盖。所以我的问题是,如何使用地图来进行这样的计算?任何帮助都将不胜感激。

向地图添加新值时,如果密钥已存在,您可以获取相关值,向其添加新值,然后将其放回地图。例如:

// Assuming that key and value were read from your file, and that
// myMap is declared as "Map<String, Double>"
if (myMap.containsKey (key)) {
    double oldValue = myMap.get (key);
    value += oldValue;
}

myMap.put (key, value);

向地图添加新值时,如果该键已存在,则可以获取关联的值,向其添加新值,然后将其放回地图中。例如:

// Assuming that key and value were read from your file, and that
// myMap is declared as "Map<String, Double>"
if (myMap.containsKey (key)) {
    double oldValue = myMap.get (key);
    value += oldValue;
}

myMap.put (key, value);

1检查映射中是否存在具有相同键的值
2如果存在,则读取它并添加当前读取的值。将其放回映射中

1检查映射中是否存在具有相同键的值
2如果存在,则读取它并添加当前读取的值。把它放回地图中

地图中没有隐含的功能。你们的家庭作业背后的理念是让你们学会如何插入、查找、获取和替换地图。其中每一个都有函数,您应该使用所有函数来完成此操作。

映射中没有隐含的功能。你们的家庭作业背后的理念是让你们学会如何插入、查找、获取和替换地图。每个都有函数,您应该使用所有函数来完成此任务。

@thekashyap如果它能让您感觉更好,那么这段代码对我来说并不适用。第二行给出了一个不兼容的类型错误,因为变量是double,但键是字符串。。。我真希望规范文档更容易阅读。@StevetheMaker你是如何声明你的地图的?@Laf我刚刚使用:TreeMap agentMap=new TreeMap;当我试图在构造函数中指定类型时,我遇到了一些我无法理解的错误,所以我想我应该尝试一下。你应该使用泛型来声明你的树,这样你就可以在编译时进行类型检查,而不是在运行时进行错误检查。您的声明应该如下所示:TreeMap agentMap=new TreeMap;。这是假设键是字符串,值是双精度的。大写表示使用类,小写表示使用基元类型。贴图只能存储对象,因此在这种情况下,需要双精度,而不是双精度。Java会自动将Double转换为Double,反之亦然。您可以阅读有关自动装箱的更多信息。@thekashyap如果它能让您感觉更好的话,这段代码不适合我。第二行给出了一个不兼容的类型错误,因为变量是double,但键是字符串。。。我真希望规范文档更容易阅读。@StevetheMaker你是如何声明你的地图的?@Laf我刚刚使用:TreeMap agentMap=new TreeMap;当我试图在构造函数中指定类型时,我遇到了一些我无法理解的错误,所以我想我应该尝试一下。你应该使用泛型来声明你的树,这样你就可以在编译时进行类型检查,而不是在运行时进行错误检查。您的声明应该如下所示:TreeMap agentMap=new TreeMap;。这是假设键是字符串,值是双精度的。大写表示使用类,小写表示使用基元类型。贴图只能存储对象,因此在这种情况下,需要双精度,而不是双精度。Java将自动将Double转换为Double,反之亦然。您可以阅读有关自动装箱的更多信息。