如何在不断增长的java列表中循环

如何在不断增长的java列表中循环,java,android,Java,Android,我有一个URL的java列表。我希望为列表中的每个URL调用一个函数。此函数将URL添加到列表中。 是否可以循环浏览所有URL,包括列表中新添加的URL for(String links: urls) { ar = getNews(links); } 在getNews()中有: urls.add(json.optString("next")); 我使用递归成功地做到了这一点。致电: getNews(json.optString("next")); 在getNews()中使用队列而不

我有一个URL的java列表。我希望为列表中的每个URL调用一个函数。此函数将URL添加到列表中。 是否可以循环浏览所有URL,包括列表中新添加的URL

for(String links: urls) {
    ar = getNews(links);
}
getNews()中有:

urls.add(json.optString("next"));
我使用递归成功地做到了这一点。致电:

getNews(json.optString("next"));

getNews()中使用队列而不是列表:

Queue<String> q = new LinkedList<>();
q.add(initial urls);
while (!q.isEmpty()) {
  String url = q.pop();
  q.addAll(readNews(url));
}

您可以对
循环使用常规的
,并在每次迭代中更改条件

int size = 1;
for (int i = 0 ; i < size ; ++i) {
    ar = getNews(urls.get(i));
    size = urls.size();
}
int size=1;
对于(int i=0;i
递归有效。或者,您可以使用索引循环(
for i=0;…
),因为它允许并发修改,并在每次迭代时检查退出条件。您还可以在此处发布getNews函数代码吗?我只是想知道getNews函数在此处的用途。如果您更新了循环内的URL,我会更清楚。@AndyTurner true,但是我基于OP代码,可能在
getNews()中有更多的功能。
getNews()方法用于从链接获取JSON对象,并向数组添加一个标签“title”字符串并返回它。。还获取分页并将其添加到url列表。所以URL不能直接从内部循环更新。。这就是我在列表上循环函数的原因
int size = 1;
for (int i = 0 ; i < size ; ++i) {
    ar = getNews(urls.get(i));
    size = urls.size();
}