java中如何把2个LIST相同的内容相加?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何把2个LIST相同的内容相加?相关的知识,希望对你有一定的参考价值。
例如有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!麻烦各位大侠了!
大侠们,最好给个例子,我参考参考!
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());
参考技术A 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);本回答被提问者采纳 参考技术B List<User> users1 = new ArrayList<User>();
List<User> users2 = new ArrayList<User>();
//模拟两个list
//使用增强for 循环迭代
for(User : user ,users1)
users2.add(user);
参考技术C list的addAll方法用于添加元素到list中,list1和list2相等的话 list.addAll(list2);也是可以的。 参考技术D 根据你的提问,有两个疑点,一,list怎么会有key,二,是没有现成的方法给你调用list相加的,自己先遍历出来再相加,或者根据你的业务逻辑处理下就好了。
以上是关于java中如何把2个LIST相同的内容相加?的主要内容,如果未能解决你的问题,请参考以下文章
java中,如何比较2个list,去掉相同的,取不同的,再组合成一个list