Заполните два списка данными - PullRequest
0 голосов
/ 05 июля 2019

У меня в данный момент есть вызов api rest, с responseOne & responseTwo. Затем я добавляю эти ответы в список, приведенный к классу-оболочке. И этот список зациклен на отображение на странице vf. Проблема в том, что теперь мне нужно 2 поля из responseTwo, чтобы добавить их на мою страницу VF. Ответы BOth связаны с идентификатором, с которым могут быть связаны данные в списке. Так что из моего responseTwo мне нужно число и поле Amount, чтобы добавить это в мой список responseOne, который будет отображаться на странице vf. Я не знаю, как этого добиться, добавив сумму к каждой конкретной информации, найденной в моем responseOne.

Поэтому я пытаюсь выполнить зацикливание в обоих полученных наборах данных.

for (Data.dataWrapper responseOne : listOne){
   for(Data.dataWrapper responseTwo : listTwo){
       if(responseOne.Id = responseTwo.id){
       /* i need to add the amount field from responseTwo to this specific  line of data at ID xxxx */
        }

    }

}

1 Ответ

0 голосов
/ 05 июля 2019

Это плохая схема с точки зрения производительности; он имеет 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...