是否有可能检查 foreach 循环中的上一个和下一个元素?

在java中使用foreach如何检查上一个和下一个元素。是否有可能检查每个循环中的上一个和下一个元素



狐的传说
浏览 167回答 4
4回答

动漫人物

for Each 循环的一些限制。另外,这可以是一种方式:    public class Main{    public static void main(String[] args) {    String[] arr={"a","b"};    String next="";    String current="";    String prev="";    for(int i=0;i<arr.length;i++){        //previousElement        if(i>0){             prev=arr[i-1] ;            System.out.println("previous: "+prev);       }else{           prev="none";          System.out.println("previous: "+prev);               }         //currentElement              current=arr[i];       System.out.println(" current: "+current);       //nextElement      if(i<arr.length-1){          next=arr[i+1];          System.out.println(" next: "+next);              }else{                  next="none";                  System.out.println(" next: "+next);                              }                }  }}还附加输出:

慕田峪9158850

不。“foreach”结构使用了Iteratorunderlying,它只有一个next()andhasNext()函数。没有办法得到previous()。Lists有一个ListIterator允许查看前一个元素,但“foreach”不知道如何使用它。因此,唯一的解决方案是记住单独变量中的前一个元素,或者仅使用像这样的简单计数循环:for(int i=0;i< foo.length();i++)。

慕婉清6462132

使用“foreach”只有next()和hasNext()方法,因此它不提供反向遍历或提取元素的方法。考虑到您有一个字符串 ArrayList,您可以使用java.util.ListIterator它提供的方法,例如hasPrevious()和previous()下面是如何使用它的示例。** 阅读代码一侧的注释,因为它包含使用这些方法的重要细节。**&nbsp; &nbsp; &nbsp; &nbsp; ArrayList<String> mylist = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; ListIterator<String> myListIterator = mylist.listIterator();&nbsp; &nbsp; &nbsp; &nbsp; myListIterator.hasNext(); // Returns: true if list has next element&nbsp; &nbsp; &nbsp; &nbsp; myListIterator.next(); // Returns: next element , Throws:NoSuchElementException - if the iteration has no next element&nbsp; &nbsp; &nbsp; &nbsp; myListIterator.hasPrevious(); // Returns: true if list has previous element&nbsp; &nbsp; &nbsp; &nbsp; myListIterator.previous(); //Returns: the previous element in the list , Throws: NoSuchElementException - if the iteration has no previous element希望这可以帮助。PS:您应该发布到目前为止所做的代码,在 stackoverflow 上发布问题,其中不包含任何内容来表明您的努力确实很糟糕。

慕尼黑的夜晚无繁华

这样做的目的是什么?foreach您可能应该使用for循环和索引来代替 afor(int i=0;i<lenght;i++) {&nbsp; &nbsp; list[i-1].dostuff //previous&nbsp; &nbsp; list[i].dostuff //current&nbsp; &nbsp; list[i+1].dostuff //next item}并且不要忘记检查下一项和上一项是否存在。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java