Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代器,在hasNext()等于false时执行某些操作_Java_Arraylist_Iterator - Fatal编程技术网

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

Java 迭代器,在hasNext()等于false时执行某些操作,java,arraylist,iterator,Java,Arraylist,Iterator,我有一个while循环,它迭代一个ArrayList,但是我想在迭代到达这个字符串列表中的最后一个字符串时做一些事情 这怎么可能呢 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { //do stuff here } do something to list string in list? It

我有一个while循环,它迭代一个
ArrayList
,但是我想在迭代到达这个字符串列表中的最后一个字符串时做一些事情

这怎么可能呢

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

            //do stuff here
            }

            do something to list string in list?
Iterator Iterator=list.Iterator();
while(iterator.hasNext()){
//在这里做事
}
是否要在列表中列出字符串?

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

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

... now last refers to the last item.
如果您想知道自己在循环中的最后一个项目上,那么在调用
next()
检索当前迭代的项目后,只需使用
hasNext()
检查一下

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


试着这样做:

string lastItem = list.get(list.size() - 1);
更新 根据您的评论,您需要访问用户
iterator.hasNext()
,以便可以尝试(不推荐):


for(int i=0;i如果您希望在循环中执行此操作,并在列表为空时防止出现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
    }
}
Iterator Iterator=list.Iterator();
while(iterator.hasNext()){
String item=iterator.next();
//在这里做点什么
如果(!iterator.hasNext()){
//把最后一件东西放在这里
}
}
尝试以下代码:

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);
            }
        }
ArrayList list=new ArrayList();
列表。添加(“一”);
列表。添加(“两个”);
列表。添加(“三”);
列表。添加(“前”);
列表。添加(“最后一次”);
迭代器迭代器=list.Iterator();
while(iterator.hasNext()){
String item=iterator.next();
i++;
如果(!iterator.hasNext()){
//用最后一个做你想做的
系统输出打印项次(项);
}
}

希望这有帮助,Salam

那么你想在迭代中找到最后一个元素吗?如果(!i.hasNext()){
,为什么不直接做
?你想在最后一个元素之后做些什么,还是用最后一个元素做些什么?是的,当我在数组
list.get(list.size())中找到它之前的所有字符串时,对该字符串做些什么-1)
将返回列表的最后一个元素。在循环之后使用它。有没有办法说iterator.hasNext()==false(意味着没有下一个元素,所以您必须在最后一个元素上)?您刚刚做了。但是使用
!iterator.hasNext()
会更干净。
iterator.hasNext()
正是您声称不存在的这种方法。谢谢^^我现在修改了我的代码,我认为这样更好。。再次感谢:)Salam
for(int i=0;i<list.size();i++) 
{
   if(!iterator.hasNext())
   {
     //do stuff here
   }
}
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    //do something here
    if(!iterator.hasNext()) {
        //do stuff with last item here
    }
}
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);
            }
        }