2015-11-05 18 views
0

我有一個需要像遍歷Web服務的所有條目,通過設置初始大小爲500的尋呼機。爲了實現這一目標,我寫了一個代碼,它將首次使用pageindex 1獲得最初的500個條目,然後通過增加索引到2等,直到我得到的所有條目。我目前有504個條目可以循環使用。但我從我的代碼中獲得了1004個計數。任何人都可以幫我解決這個問題。這是代碼。如何通過設置分頁器來遍歷Java數組列表條目?

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

你需要重寫你的while循環,如下所示:

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

這是可行的。非常感謝。 –