如何通过设置寻呼机循环遍历 Java 数组列表条目?

Posted

技术标签:

【中文标题】如何通过设置寻呼机循环遍历 Java 数组列表条目?【英文标题】:How to loop through Java arraylist entries by setting pager? 【发布时间】:2015-11-05 09:19:03 【问题描述】:

我有一个要求,比如需要通过将寻呼机设置为初始大小 500 来遍历 Web 服务的所有条目。为此,我正在编写一个代码,它将第一次使用 pageindex 1 获取初始的 500 个条目和然后通过将索引增加到 2 等等,直到我得到所有条目。我目前有 504 个条目要循环。但是我从我的代码中得到了 1004 个计数。谁能帮我解决这个问题。这是代码。

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);

【讨论】:

谢谢。会试试这个。 我也试过了,但遇到了一些问题。所以用其他方法去了。非常感谢您指导我。【参考方案2】:

您必须按如下方式重写您的 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++;

【讨论】:

谢谢。我会尝试这种方法。

以上是关于如何通过设置寻呼机循环遍历 Java 数组列表条目?的主要内容,如果未能解决你的问题,请参考以下文章

jquery 如何遍历循环数组

如何一次将一个项目添加(推送)到一个数组(循环遍历数组)

添加到 NSDictionary 条目到 NSMutableDictionary

通过使用按钮设置状态来循环遍历数组中的对象 React

如何循环遍历数组并取消设置数组中的变量

循环遍历全局环境