汇总数组列表中对象的值(Java)

汇总数组列表中对象的值(Java),java,arraylist,hashmap,linkedhashmap,Java,Arraylist,Hashmap,Linkedhashmap,我有这样的密钥/值 ("A", 2.2); ("A", 1.1); ("B", 4.0); ("B", 2.0); ("C", 2.5); ("A", 2.0); ("A", 2.2); ("A", 1.0); 我希望有结果 A=3.3 B=6.0 C=2.5 A=5.2 A=8.5 B=6.0 C=2.5 我试过用密码

我有这样的密钥/值

("A", 2.2);
("A", 1.1);
("B", 4.0);
("B", 2.0);
("C", 2.5);
("A", 2.0);
("A", 2.2);
("A", 1.0);
我希望有结果

A=3.3
B=6.0
C=2.5
A=5.2
A=8.5
B=6.0
C=2.5
我试过用密码

           static LinkedHashMap<String, Double> map = new LinkedHashMap<String, Double>();
    public static void putAndIncrement(String key, double value) {
        Double prev = map.get(key);
        Double newValue = value;
        if (prev != null) {
            newValue += prev;
        }
        double roundOff = Math.round(newValue * 10.0) / 10.0;
        map.put(key,roundOff);

    }
Hashmap、Map、LinkedHashmap不是获得预期结果的正确方法。对于这种情况,你能请教我其他的方法吗? 请帮助我如何得到它,或者任何对我有帮助的建议。谢谢

A仍然是一个
映射
,这意味着键是唯一的。地图不能同时有两个
“A”

如果要汇总连续键的值,则需要使用
列表
,其中包含一个用于存储键/值对的类:

static List=new ArrayList();
公共静态void putAndIncrement(字符串键,双值){
KeyValue KeyValue=(list.isEmpty()?null:list.get(list.size()-1));
if(keyValue==null | |!key.equals(keyValue.getKey())){
添加(新的键值(键,值));
}否则{
keyValue.addValue(值);
}
}
公共最终类KeyValue{
私有最终字符串密钥;
私人双重价值;
公钥值(字符串键,双值){
this.key=key;
这个值=值;
}
公共无效附加值(双倍值){
这个值为+value;
}
公共字符串getKey(){
返回此.key;
}
公共双getValue(){
返回此.value;
}
@凌驾
公共字符串toString(){
返回this.key+“=”+this.value;
}
}
试验

putAndIncrement(“A”,2.2);
putAndIncrement(“A”,1.1);
putAndIncrement(“B”,4.0);
putAndIncrement(“B”,2.0);
putAndIncrement(“C”,2.5);
putAndIncrement(“A”,2.0);
putAndIncrement(“A”,2.2);
putAndIncrement(“A”,1.0);
系统输出打印项次(列表);
输出

[A=3.30000000003,B=6.0,C=2.5,A=5.2]

A的总和是8.5。为什么你不期望它是8.5?如果你把A的两个不同值放在那样的映射中,你就不能得到它们。为什么程序要把5.2添加到一个新的“A”变量中,而不是原来的A值?它将自动向原始值添加一个值。这是一个函数,所以一个域只能有一个辅域,而不是两个。否则程序将如何引用这两个独特的密码域?@ChilliPenguin我知道这就是为什么我需要你的帮助来找到另一个方法,而不是使用Hashmap、Map或LinkedHashmap