【发布时间】:2015-01-01 22:20:55
【问题描述】:
我有一个 Arraylist 的 Arraylist。首先,我尝试比较所有数组列表,如果第一个元素相等,则将所有重复的数组列表合并为一个,并对每个数组的最后一个元素求和。每个数组列表的大小固定为 3 个元素。
例如:
ArrayList<String> archiveList = new ArrayList<String>();
archiveList.add("2605");
archiveList.add("SD");
archiveList.add("25");
ArrayList<String> archiveList2 = new ArrayList<String>();
archiveList2.add("3470");
archiveList2.add("SD2");
archiveList2.add("25");
ArrayList<String> archiveList3 = new ArrayList<String>();
archiveList3.add("2605");
archiveList3.add("SD2");
archiveList3.add("20");
ArrayList<String> archiveList4 = new ArrayList<String>();
archiveList4.add("2605");
archiveList4.add("SD2");
archiveList4.add("20");
//code to consolidate arraylists
ArrayList<ArrayList<String>> dataTable = new ArrayList<ArrayList<String>>();
dataTable.addRow(archiveList);
我希望最终结果变成 归档列表 = ["2605","SD","65"]; // 最后一个元素是前一个数组的总和(25+25+20) archiveList = ["3470","SD2","20"]
提前谢谢大家,祝大家新年快乐!
【问题讨论】:
-
你的规格太模糊了。当你说“有些是平等的”时,它似乎必须是第一个,而不是任何一个或任何两个。为什么你将最后一个值作为字符串而不是其他值或其他元素?
-
我认为最好的办法是创建一个 POJO,因为您存储在每个 ArrayList 中的值之间似乎存在关系。然后只需合并一个相等的对象(您需要覆盖它)并创建一个新对象,该对象具有此“第三个”参数的总和。
-
dataTable.addAll(archiveList,archiveList2,archive3,archiveList4)甚至不是有效代码。addAll没有可变参数版本。 -
对不起,误导的代码,我重新编辑了它。这只是一个常规的 addRow 方法。
-
@Marquis - 你找到合适的解决方案了吗?
标签: java arraylist collections