두 번째 필드에 첫 번째 필드를 채우려는 관련 필드가있는 객체의 arraylists가 두 개 있습니다. 데이터가 작은 경우 일반적으로두 개의 큰 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 약 50 만 크기 자극에 각각이다) 얻을 때이 문제가 발생.
속도를 높이기 위해 내가 할 수있는 최적화가 무엇인지, 또는 달성하려는 루프의 중첩 루프 대신 사용할 수있는 대안이 있는지 잘 모르십니까?
? Java 8의 경우 스트림을 시도하십시오 – Pons
해당 ID를 키로 사용하여 해당 데이터를 두 개의 맵에 넣을 수 있습니다. n 회 2 루핑을 저장합니다. – GhostCat
자바 8을 사용하고 있습니다.하지만 스트림 폰에 익숙하지 않은 경우이 두 목록 간의 필터링에 유효한 옵션입니까? –