迭代器,当hasNext()等于false时执行某些操作

时间:2013-11-17 15:20:11

标签: java arraylist iterator

我有一个迭代ArrayList的while循环但我希望在迭代到达此字符串列表中的最后一个字符串时执行某些操作。

怎么可以这样做?

Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {

            //do stuff here
            }

            do something to list string in list?

5 个答案:

答案 0 :(得分:2)

在外部范围内有一个局部变量来记住最后一项:

String last = null;
while (iterator.hasNext()) {
  last = iterator.next();
}

... now last refers to the last item.

如果你想知道你在循环中的最后一项,那么只需在调用hasNext()之后用next()检查当前迭代的项目。

while (iterator.hasNext()) {
  String s = iterator.next();
  if (!iterator.hasNext()) {
     // here s is guaranteed to refer to the last item
  }
}

答案 1 :(得分:1)

String str = null;
while (iterator.hasNext()) {
  str = iterator.next();//str will contain the string
}
System.out.print(str);

arrayList.get(arrayList.size()-1);

答案 2 :(得分:0)

尝试这样的事情:

string lastItem = list.get(list.size() - 1);

更新

根据您的评论,您需要使用iterator.hasNext(),以便您可以尝试(不推荐):

for(int i=0;i<list.size();i++) 
{
   if(!iterator.hasNext())
   {
     //do stuff here
   }
}

答案 3 :(得分:0)

如果您想在循环中执行此操作,并且在列表为空时阻止NullPointerException,则可以这样做:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    //do something here
    if(!iterator.hasNext()) {
        //do stuff with last item here
    }
}

答案 4 :(得分:0)

试试这段代码:

ArrayList<String> list = new ArrayList<>();
        list.add("One");
        list.add("Two");
        list.add("Three");
        list.add("Fore");
        list.add("Last");

        Iterator<String> iterator = list.iterator();

        while(iterator.hasNext()) {
            String item = iterator.next();
            i++;
            if(!iterator.hasNext()) {
                // do what you want with the last one
                System.out.println(item);
            }
        }

希望有所帮助,萨拉姆