迭代Arraylist <string []>

时间:2016-05-11 15:40:47

标签: java arrays arraylist iterator

我有一个带有String数组的ArrayList,我无法弄清楚如何循环。迭代器对我来说是新手,即使我过去使用它们,我也不确定该怎么做。

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)。据我所知list.get(x)只给我一行。

在上面的代码中,我希望每个行String Array都在某个索引处。 像这样:

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

4 个答案:

答案 0 :(得分:6)

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

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

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

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

修改

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

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 :(得分:1)

您可以在不必担心代码中的迭代器的情况下执行此操作:

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:-1)

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

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