【问题标题】:Iterate over Arraylist<String[]> [duplicate]遍历 Arraylist<String[]> [重复]
【发布时间】:2016-09-07 03:13:56
【问题描述】:

我有一个完整的 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) 只给了我行。

在上面的代码中,我希望每行字符串数组都位于某个索引处。 像这样的:

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

【问题讨论】:

  • 这里有一个细微的差别,作者试图确定如何在循环内使用Array值。

标签: java arrays arraylist iterator


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    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 秒的速度进入帖子。
    【解决方案3】:
    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
    }
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-09-08
        • 2016-06-04
        • 2015-11-28
        • 2018-08-07
        • 2018-03-22
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        相关资源
        最近更新 更多