2015-11-05 3 views
0

У меня есть требование, как нужно прокручивать все записи веб-службы, установив пейджер с начальным размером 500. Чтобы достичь этого, я пишу код, который впервые получит начальные 500 записей с помощью pageindex 1, а затем путем увеличения индекса до 2 и т. д. до тех пор, пока все записи я не получу. В настоящее время у меня есть 504 записи. Но я получаю счет 1004 от моего кода. Может ли кто-нибудь помочь мне решить эту проблему. Вот код.Как петля через записи Java-arraylist, задав пейджер?

int pageIndex = 1; 
      List<User> usersList = getUsers(pageIndex); 
      List<User> allUsersList = new ArrayList<User>(); 
      allUsersList.addAll(usersList); 
      while (!allUsersList.isEmpty()) { 
       allUsersList = new ArrayList<User>(); 
       allUsersList = getUsers(pageIndex); 
       usersList.addAll(allUsersList); 
       pageIndex++; 
      } 

метод getUsers ниже:

private List<User> getUsers(int pageIndex){ 
UserFilter filter = new UserFilter(); 
    FilterPager pager = new FilterPager(); 
    pager.pageIndex = pageIndex; 
    pager.pageSize = 500; 
UserService userService = client.getUserService(); 
    return userService.list(filter, pager).objects; 
} 

Спасибо заранее.

ответ

1

Вы используете тот же самый указатель дважды. Вам не нужно обрабатывать первый индекс отдельно, прежде чем вы перейдете через список.

Кроме того, я думаю, вы могли бы написать код короче, например, так:

int pageIndex = 1; 
List<User> usersList; 
List<User> allUsersList = new ArrayList<User>(); 
while ((usersList = getUsers(pageIndex++)) != null) { 
    allUsersList.addAll(usersList); 
} 
+0

Спасибо. Попытаться на это. –

+0

Я тоже пробовал это, но проблема была. Так пошел с другим подходом. Большое вам спасибо за руководство. –

1

Вы должны переписать время цикла следующим образом:

int pageIndex = 1; 
List<User> usersList = new ArrayList<User>(); 

while (1 == 1) { 
    allUsersList = getUsers(pageIndex); 
    if (allUserList == null || allUserList.size() == 0) 
    break; 
    usersList.addAll(allUsersList); 
    pageIndex++; 
} 
+1

Спасибо. Я попробую этот подход. –

+1

Это работает. Большое спасибо. –