java - 如何处理 HashMap 中相同的键?

标签 java hashmap

战友们大家好。

显然, HashMap 中的键是唯一的。但是,我一直在尝试编写一个代码来读取 csv 文件,然后将键和值放入 map 中。然而,有一些键是相同的(每个键在 csv 文件中就像 15 次)。在这种情况下,它应该对这些值求和,并且只返回一次 key 。 怎么做?我现在的代码如下。

BufferedReader br = null;
String line;



    try {
        br = new BufferedReader(new FileReader(filepath)); 

    } catch (FileNotFoundException fnfex) {

        System.out.println(fnfex.getMessage() + "Bestand niet gevonden!");
        System.exit(0);
    }

    //this is where we read lines
    try {
        while((line = br.readLine()) != null) {
            String[] splitter = line.split(cvsSplitBy);

            if(splitter[0] != "Voertuig") {

                alldataMap.put(splitter[0], splitter[8]);

        }


            //MIGHT BE JUNK, DONT KNOW YET
            /*if((splitter[0].toLowerCase()).contains("1")){
                double valuekm = Double.parseDouble(splitter[8]);
                license1 += valuekm;
                System.out.println(license1);
            }
            else {
                System.out.println("not found");
            }*/


        }
        System.out.println(alldataMap);
        TextOutput();
    } catch (IOException ioex) {
        System.out.println(ioex.getMessage() + " Error 1");
    } finally {
        System.exit(0);
    }

因此,如果我有以下信息(在本例中,第 0 个和第 8 个单词读取 csv 文件中的每一行)

Apples; 299,9
Bananas; 300,23
Apples; 3912,1
Bananas;342
Bananas;343

它应该返回

Apples;Total
Bananas;Total

最佳答案

尝试以下操作:

if( alldataMap.containsKey(splitter[0]) ) { 
  Double sum = alldataMap.remove(splitter[0]) + Double.parseDouble(splitter[8]);
  allDataMap.put(splitter[0], sum );
} else {
  alldataMap.put(splitter[0], Double.valueOf(splitter[8]) );
}

关于java - 如何处理 HashMap 中相同的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50395346/

相关文章:

java - 对java中的 `toArray(T[] a)`方法感到困惑

java - JME应用程序可以修改手机上的默认表单吗?

java - HashMap 自己改变值

java - 首次运行项目时未生成 Log4j 日志文件

java - For 循环使用 JFreeChart 创建多个系列

java - 返回 boolean 变量或返回条件都相同吗?

java - 为什么并行流不能提供完整的元素列表

java - 访问在主类中创建的 map 接口(interface)对象

Java.util.HashMap —— 为什么 HashMap 扩展 AbstractMap 并实现 Map?

algorithm - 将单词与字典中的目标单词进行比较