Java 排列索引。。。解析URL';但是不知道每个HTML页面的确切索引?

Java 排列索引。。。解析URL';但是不知道每个HTML页面的确切索引?,java,android,Java,Android,我正在用以下内容解析一些URL链接 Document jsDoc2 = null; try { jsDoc2 = Jsoup.connect(url).get(); Elements thumbs = jsDoc2.select("div.latest-media-images img.latestMediaThumb"); List<String> thum

我正在用以下内容解析一些URL链接

  Document jsDoc2 = null;
          try {
              jsDoc2 = Jsoup.connect(url).get();

                  Elements thumbs = jsDoc2.select("div.latest-media-images img.latestMediaThumb");
                  List<String> thumbLinks = new ArrayList<String>(); 
                  for(Element thumb : thumbs) {
                      thumbLinks.add(thumb.attr("src"));
                  }
                  for(String thumb : thumbLinks) {
                     url0 = thumbLinks.get(0);
                     url1 = thumbLinks.get(1); 
                     url2 = thumbLinks.get(2);

                     Log.e("URL0", url0);
                     Log.e("URL1", url1);
                     Log.e("URL2", url2);
有时,当我要求获得2的索引时,没有可用的三个链接,也没有可用的链接,而且它不存在

如何编写防御代码或创建更好的实现方法。不知道它将解析并加载到列表中的URL的确切数量的不确定性

编辑:

我的代码现在

 for(int i = 0; i< thumbLinks.size(); i++) {
                            Log.e("URL" + i, thumbLinks.get(i));




                     url0 = thumbLinks.get(i);
                     url1 = thumbLinks.get(i); 

                     //Fix index out of bounds exception
                     url2 = thumbLinks.get(i);



                  }
for(int i=0;i
您认为这对您的循环结构更有效吗

for(int i = 0; i< thumbLinks.size(); i++) {
    Log.e("URL" + i, thumbLinks.get(i));
}
第二个选项通过减少循环结构并提供相同的结果来减少操作时间。这两种错误都不会导致索引越界错误,因为它只会在列表中有拇指的情况下添加URL


代码失败的原因是因为您显式地尝试调用索引,而实际上忽略了循环结构。使用循环的原因是,您不必显式地从数组中获取对象,并且可能会出现越界异常。

您认为这对您的循环结构更有效吗

for(int i = 0; i< thumbLinks.size(); i++) {
    Log.e("URL" + i, thumbLinks.get(i));
}
第二个选项通过减少循环结构并提供相同的结果来减少操作时间。这两种错误都不会导致索引越界错误,因为它只会在列表中有拇指的情况下添加URL



代码失败的原因是因为您显式地尝试调用索引,而实际上忽略了循环结构。使用循环的原因是,您不必显式地从数组中获取对象,也不会发生越界异常。

这没有任何意义:您为每个循环都设置了一个for,并且您没有使用它,而是试图通过集合硬编码,并且在循环中也不例外。为什么?这表明,在尝试处理Android编程之前,您可能会通过阅读一两篇Java入门教程获益。相信我,这不是浪费时间。你能告诉我一个更好的方法吗?我在HS学习了两年java。我6月刚从HS毕业。这就是for list为你做的。查看列表、foreach列表和ArrayList。Shot Russell向您展示了如何使用for循环来实现这一点。这毫无意义:每个循环都有一个for循环,您没有使用它,而是试图通过集合硬编码,在循环内部也同样如此。为什么?这表明,在尝试处理Android编程之前,您可能会通过阅读一两篇Java入门教程获益。相信我,这不是浪费时间。你能告诉我一个更好的方法吗?我在HS学习了两年java。我6月刚从HS毕业。这就是for list为你做的。查看列表、foreach列表和ArrayList。Shot Russell向您展示了如何使用for循环来实现这一点。那么,如何基于此调用我的ArrayList.get方法呢?如果我调用它从数组列表中获取3个字符串,但只有2个。我的代码如何知道不查找第三个字符串?他正在向您演示如何使用get。for列表有一个最大值,这里设置为数组列表的size()。同样,这些都在基础教程中详细说明了。我不太清楚你在这里问什么。使用我提供的循环结构,它只会将尽可能多的URL放在日志中,就像拇指链接中的元素一样。如果ArrayList中只有2个元素,那么这个循环结构将输出Log.e(Log0,url0)和Log.e(Log1,url1)的等效值。更新我的答案以进一步澄清您是否也可以在代码中发布字符串以显示索引是如何传递的?那么如何基于此调用我的ArrayList.get方法?如果我调用它从数组列表中获取3个字符串,但只有2个。我的代码如何知道不查找第三个字符串?他正在向您演示如何使用get。for列表有一个最大值,这里设置为数组列表的size()。同样,这些都在基础教程中详细说明了。我不太清楚你在这里问什么。使用我提供的循环结构,它只会将尽可能多的URL放在日志中,就像拇指链接中的元素一样。如果ArrayList中只有2个元素,此循环结构将输出Log.e(Log0,url0)和Log.e(Log1,url1)的等效值。更新我的答案以进一步澄清您是否也可以在代码中发布字符串以显示索引的传递方式?
Elements thumbs = jsDoc2.select("div.latest-media-images img.latestMediaThumb");

int index = 0;

for(Element thumb : thumbs) {
    Log.e("URL" + index, (thumb.attr("src"));
    index++;
}