arraylist中的Java分组值

arraylist中的Java分组值,java,arraylist,grouping,Java,Arraylist,Grouping,我有三门课: 计算类(包括FinalPrice()方法,该方法返回双精度值) 文件读取器类(加载CSV文件,将数据拆分为数组,并返回数组的第一个元素,即字符串。包括getType()方法) 合同类(仅包含构造函数) File a=新文件(“D:\\…\\contract.csv”); Calculation1 calc=新计算1(a); File_Reader1 b=新文件_Reader1(); 合同c=新合同(b.getType(a),计算最终价格()) 我需要一个列表来存储契约对象,并对键(

我有三门课:

  • 计算类(包括FinalPrice()方法,该方法返回双精度值)
  • 文件读取器类(加载CSV文件,将数据拆分为数组,并返回数组的第一个元素,即字符串。包括getType()方法)
  • 合同类(仅包含构造函数)
  • File a=新文件(“D:\\…\\contract.csv”);
    Calculation1 calc=新计算1(a);
    File_Reader1 b=新文件_Reader1();
    合同c=新合同(b.getType(a),计算最终价格())

    我需要一个列表来存储契约对象,并对键(即b.getType(a))进行分组,并对它们的值求和(即calc.FinalPrice()),如

    输入(例如):

    list.add(“AB”,5);
    列表。添加(“AC”,8);
    增加(“AB”,12)

    我希望得到如下输出:

    “AB”:17
    “AC”:8

    有人能帮我吗?

    在Java 8中

     entries.stream().collect(Collectors.groupingBy(
          entry -> entry.getKey(),
          Collectors.summingInt(entry -> entry.getValue())));
    

    您可以迭代ArrayList或Map或其他任何内容,然后在第二个列表中聚合值(如果第二个列表中已经有键或没有键,请使用contains())——这当然不是很有效,但应该可以。取决于列表/地图的大小。此列表/地图是以下列表/地图的副本: