关于Java:遍历Arraylist

Iterate over Arraylist<String[]>

本问题已经有最佳答案,请猛点这里访问。

我有一个包含字符串数组的数组列表,我不知道如何循环。迭代器对我来说是新的,尽管我过去使用过它们,但我不知道在这里应该做什么。

1
2
3
Iterator<String[]> iterator = list.iterator();
                while (iterator.hasNext()) {
                    String trip ="Till:" + iterator.next(0) +" | Fr?n:" + list.get(4) +" | Kostar:" + list.get(1) +"kr | Avg?r:" + list.get(2) +" | Ankomst Tid:" + list.get(3) +" | Antal bokningar:" + list.get(4);

这是我正在做的一些试验。我认为iterator.next()将返回当前行上的StringArray,因此我尝试了例如iterator.next(0)。据我所知,get(x)只给我一行。

在上面的代码中,我希望每个行字符串数组都有一个特定的索引。像这样:

1
2
for each row
 system.out.println(String[2] +String[5]);


这是因为您有一个数组列表,而不是字符串列表。

1
2
3
4
List<String[]> list = //some data
for (String[] array : list){
    System.out.println(array[3] +":" + array[5]);
}

如果要对每个字符串进行迭代,则必须迭代两次。

1
2
3
4
5
6
List<String[]> list = //some data
for (String[] array : list){
    for (String s : array){
        System.out.println(s);
    }
}

编辑

上面是使用迭代器的简写。

1
2
3
4
5
6
List<String[]> list = //some data
Iterator<String[]> itr = list.iterator();
while (itr.hasNext()){
    String[] array = itr.next(); // You were just missing saving the value for reuse
    System.out.println(array[3] +":" + array[5]);
}

您可以这样做而不必担心代码中的迭代器:

1
2
3
4
5
6
7
8
9
List<String[]> test = new ArrayList<>();
for(String[] array : test) {
    //Iterate over inner array:
    for(String s : array) {
        System.out.println(s);
    }
    //or access directly
    System.out.println(array[0]);
}


1
2
3
4
5
Iterator<String[]> iterator = list.iterator();
while (iterator.hasNext()) {
    String[] row = iterator.next();
    //Do stuff with row
}

如果使用列表,还可以使用for循环:

1
2
3
for(String[] row : list) {
    //Do stuff with row
}

arraylist中的每个项都是一个字符串[],因此iterator.next()返回一个字符串[]。一旦拥有了字符串数组,就可以像使用数组索引表示法的任何其他数组一样访问它。item[0]是数组中的第一个项,item.length告诉您数组中有多少项。

在调用list.get(4)的地方,还将返回一个字符串数组,这几乎肯定不是您在输出中想要的。