日期:2014-05-17 浏览次数:21039 次
import java.util.ArrayList;
import java.util.List;
class Main {
/*
* {张三,3} {李四,16} {王五,6} {二麻子,8}
*
* {李四,3} {二麻子,4} {刘德华,8}
*/
/*
* 0 -{张三,3} 1 -{李四,19} 2 -{王五,6} 3 -{二麻子,10} 4 -{刘德华,8}
*/
public static void main(String args[]) {
List<String[]> list1 = new ArrayList<String[]>();
List<String[]> list2 = new ArrayList<String[]>();
list1.add(new String[] { "张三", "3" });
list1.add(new String[] { "李四", "16" });
list1.add(new String[] { "王五", "6" });
list1.add(new String[] { "二麻子", "8" });
list2.add(new String[] { "李四", "3" });
list2.add(new String[] { "二麻子", "4" });
list2.add(new String[] { "刘德华", "8" });
List<String[]> r = add(list1, list2);
for (String[] arg : r)
System.out.println(arg[0] + " " + arg[1]);
}
private static List<String[]> add(final List<String[]> arg0,
final List<String[]> arg1) {
List<String[]> result = new ArrayList<String[]>();
for (int i = 0; i < arg0.size(); i++) {
// 标记arg0.get(i).[0] 和
// arg1.get(j).[0] 是否一样
boolean flag = false;
for (int j = 0; j < arg1.size(); j++) {
// 判断String[0] 是否一样
if (arg0.get(i)[0].equals(arg1.get(j)[0])) {
flag = true;
// String[1]加法
int temp = Integer.parseInt(arg0.get(i)[1])
+ Integer.parseInt(arg1.get(j)[1]);
// 以arg0 为标准 ,放入结果中
result.add(new String[] { arg0.get(i)[0],
String.valueOf(temp) });
// 去掉 arg1中String[0]相同的元素
arg1.remove(j);
break; // 这一句增加效率而已
}
}
// 如果 arg0.get(i).[0] 和 arg1.get(j).[0] 一样 避免重复添加
if (!flag)
result.add(arg0.get(i));
}
// 判断arg1 中是否还有剩余
if (arg1.size() > 0)
result.addAll(arg1);
return result;
}
}
------解决方案--------------------