Это плохая схема с точки зрения производительности; он имеет N*M
сложность, потому что вы должны перебирать каждый элемент в listTwo
для каждого элемента в listOne
. Это отрицательно повлияет на пределы вашего процессора и чувствительность вашего интерфейса.
Ваш класс-оболочка обычно должен включать все данные, необходимые для отображения позиции. Непонятно, почему это не так; Вы не включили ни одного из этого контекста в свой вопрос. Здесь самое лучшее, что я могу порекомендовать, это переварить эти предметы в Map<Id, Data.dataWrapper>
коллекций:
Map<Id, Data.dataWrapper> mapTwo = new Map<Id, Data.dataWrapper>();
for (Data.dataWrapper responseTwo : listTwo) {
mapOne.put(responseOne.Id, responseTwo);
}
Затем вы можете перейти к listOne
и получить доступ к соответствующей записи listTwo
напрямую через карту, набранную на Id
. Это позволяет избежать мультипликативной сложности, потому что вы заканчиваете итерацию по каждому списку ровно один раз, и можете просто сделать:
mapTwo.get(responseOne.Id); // yields corresponding responseTwo entity.
Затем у вас есть нужные вам элементы данных, и вы можете их переварить, чтобы удовлетворить специфические потребности вашей страницы Visualforce.