java中如何把2个LIST相同的内容相加?

例如有list1里面有个字段叫A,B,C,A=1,B=1,C=1;list2里面有个字段也叫A,D,E,A=2,D=2,E=2!我想在合并之后等到合并之后的resultL... 例如有list1里面有个字段叫A,B,C,A=1,B=1,C=1;list2里面有个字段也叫A,D,E,A=2,D=2,E=2!我想在合并之后等到合并之后的resultList,resultList里面的内容是:A,B,C,D,E A=3,B=1,C=1,D=2,E=2!麻烦各位大侠了!
大侠们,最好给个例子,我参考参考!
展开
 我来答
wp850724
2014-01-15 · 超过22用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:50.9万
展开全部
package test;

import java.util.*;

public class Test {
    public void test() {
        List list1 = new ArrayList();
        list1.add(new Field("A", 1));
        list1.add(new Field("B", 1));
        list1.add(new Field("C", 1));
        List list2 = new ArrayList();
        list2.add(new Field("A", 2));
        list2.add(new Field("D", 2));
        list2.add(new Field("E", 2));
        List res = Join(list1, list2);
        for (Field field : res) {
            System.out.print(field.getName() + ":" + field.getValue() + " ,");
        }
    }

    public static void main(String[] args) {
        new Test().test();
    }

    public static List Join(List list1, List list2) {
        List res = new ArrayList();
        List list2_copy = new ArrayList(list2);
        for (Field field1 : list1) {
            boolean hasSameOne = false;
            for (Field field2 : list2) {
                if (field1.getName().equals(field2.getName())) {
                    res.add(field1.add(field2));
                    list2_copy.remove(field2);
                    hasSameOne = true;
                }
            }
            if (!hasSameOne)
                res.add(field1);
        }
        res.addAll(list2_copy);
        return res;
    }

    public class Field {
        private int value = 0;
        private String name;

        public Field(String name, int value) {
            this.name = name;
            this.value = value;
        }

        public int getValue() {
            return value;
        }

        public String getName() {
            return name;
        }

        public Field add(Field value) {
            return new Field(this.getName(), this.getValue() + value.getValue());
        }
    }
}
匿名用户
2014-01-15
展开全部
Map<String, Integer> list1 = new HashMap<String, Integer>();
list1.put("A", 1);
list1.put("B", 1);
list1.put("C", 1);
Map<String, Integer> list2 = new HashMap<String, Integer>();
list2.put("A", 2);
list2.put("D", 2);
list2.put("E", 2);
Set<String> set = list2.keySet();
for (String temp : set) {
if (list1.get(temp) != null) {
list1.put(temp, list1.get(temp).intValue() + list2.get(temp).intValue());
} else {
list1.put(temp, list2.get(temp));
}
}
System.out.println(list1);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怕森林的柴
2015-09-06 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:317
采纳率:85%
帮助的人:110万
展开全部
List<User> users1 = new ArrayList<User>();
List<User> users2 = new ArrayList<User>();
//模拟两个list

//使用增强for 循环迭代

for(User : user ,users1){
    users2.add(user);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
看会飞的牛123
2015-07-14 · TA获得超过327个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:100万
展开全部
list的addAll方法用于添加元素到list中,list1和list2相等的话 list.addAll(list2);也是可以的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李小姐爱生活
2014-01-15 · TA获得超过119个赞
知道答主
回答量:121
采纳率:0%
帮助的人:48.3万
展开全部
根据你的提问,有两个疑点,一,list怎么会有key,二,是没有现成的方法给你调用list相加的,自己先遍历出来再相加,或者根据你的业务逻辑处理下就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式