在Java中填充列表数组中的字符串数组

时间:2011-03-11 18:33:15

标签: java android arrays

这是我第一次涉足Java,所以请原谅我,如果这很简单,但是我很难遍历列表并用列表项填充字符串数组。

具体来说,我使用Jsoup来解析网址并提取某些元素:

Document doc = Jsoup.connect(content).get();
Elements threads = doc.getElementsByClass("page-link");
for (Element src : threads){
    String title = src.text();
    String href = src.attr("href");
        THREADS[0] = title;
}

THREADS是一个字符串数组:

static final String[] THREADS = new String[] {};

我似乎无法遍历Elements数组并使用标题值填充THREADS。在上面的示例中保留THREADS[0]索引,成功地将最终标题值推送到字符串[]中,如预期的那样。但是在for(i=0;i<25;i++)语句周围使用THREADS[i] = title;类型的循环会导致Android应用程序中的强制关闭。

任何提示都会很棒。

3 个答案:

答案 0 :(得分:3)

您已经创建了一个零元素数组,并且数组不可调整大小。您是否有任何特殊原因要求您使用List<String>

static final List<String> THREADS = new ArrayList<String>();

// ...

for (Element src : threads){
    String title = src.text();
    String href = src.attr("href");
        THREADS.add(title);
}

答案 1 :(得分:2)

你必须初始化你的数组:

static final String[] THREADS = new String[25];

当然,您实际上并不是for(i=0;i>25;i++)而是渴望for(i=0;i<25;i++),请参阅< >中的差异。

甚至更好,因为@Matt Ball建议使用List<String>

答案 2 :(得分:2)

Java数组的大小在创建时是固定的:当您在其中添加元素时,它们不会自动增长。

如果您事先知道要放入的元素数量,则可以使用该大小创建数组。在你的情况下,像:

String[] THREADS = new String[threads.size()];
int i = 0;
for (Element src : threads) {
  String title = src.text();
  String href = src.attr("href");
  THREADS[i++] = title;
}

然而,在Java中使用数组并不是非常惯用,因为它们不是很灵活(它们在键入时还有其他问题)。使用java.util中的众多集合类型之一更为常见。 List接口及其ArrayList实现提供了您想要的“可扩展的元素数组”:

List<String> THREADS = new ArrayList<String>();
for (Element src : threads) {
  String title = src.text();
  String href = src.attr("href");
  THREADS.add(title);
}