【发布时间】:2017-03-17 17:11:54
【问题描述】:
有 2 个对象数组列表,其中第二个对象有一个相关字段,我想用它填充第一个对象。
public ArrayList<object1> updateAccountWithGSAM(ArrayList<object1> o1, ArrayList<object2> o2) {
ArrayList<object1> accs = new ArrayList<object1>();
for (object1 acc : o1) {
ArrayList<String> o2s= new ArrayList<String>();
for (object2 g : o2) {
if (g.getfield() != null) {
if (acc.getId().equals(g.getobject1())) {
o2s.add(g.getCode());
}
}
}
acc.setGSAM_code(o2s);
accs.add(acc);
}
return accs;
}
通常,当数据较小时,这可以正常工作,但是当数据集变大时(obj1 和 2 在 prod 中每个大小约为 500,000)会遇到问题。
不确定我可以做哪些优化来加快速度,或者是否有替代嵌套 for 循环的方法来完成我想要完成的任务?
【问题讨论】:
-
你使用的是什么版本的java?如果是 Java 8,请尝试流
-
您可以将该数据放入两个地图中,使用该 ID 作为键。为您节省 n 次 2 循环。
-
我在使用 java 8。但对流 pons 不太熟悉,这是在 2 个列表之间进行过滤的有效选项吗?
-
我很高兴我的意见让您编写自己的工作解决方案。如果您发现我的意见有帮助,我不介意您支持我的另一个答案。 :-)