2つ目のオブジェクトに2つ目のオブジェクトに関連するフィールドがあり、最初のオブジェクトを配置したいオブジェクトが2つあります。一般的に2つの大きなarraylistsを利用するネストされたforループを高速化する
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ある)大取得するとき、これは問題に遭遇しました。
これを高速化するために私ができる最適化や、私が達成しようとしているループのネストされた代替方法はありませんか?
? Java 8の場合、ストリームを試してください – Pons
そのIDをキーとして2つのマップにそのデータを入れることができます。 n回2ループを保存します。 – GhostCat
私はjava 8を使っていますが、ストリームponsにあまり慣れていないので、これは2つのリストの間でフィルタリングするための有効なオプションですか? –