Java 问题数组列表类

Java 问题数组列表类,java,arraylist,Java,Arraylist,我在列出ArrayList时遇到问题。我的代码: Iterator<String> iterator = (Iterator<String>) myList.iterator(); while (iterator.hasNext()) {//List tagListAux System.out.println("Test -> "+iterator.next()); if(iterator.next().equalsIgnoreCas

我在列出ArrayList时遇到问题。我的代码:

Iterator<String> iterator = (Iterator<String>) myList.iterator();
while (iterator.hasNext()) {//List tagListAux
        System.out.println("Test -> "+iterator.next());
        if(iterator.next().equalsIgnoreCase(myString)){
        flag = true;
}

 myList.add(myString);
我做错了什么??在此之前,我还遇到了并发问题,通过更改迭代器声明解决了这些问题。
提前感谢

在检查下一个元素是否存在后,您在while block中调用了两次
next()
[请注意不是两个]

替换

Iterator<String> iterator = (Iterator<String>) myList.iterator();
while (iterator.hasNext()) {//List tagListAux
        System.out.println("Test -> "+iterator.next());
        if(iterator.next().equalsIgnoreCase(myString)){
        flag = true;
}  
在检查是否存在下一个元素后,您在while块中调用了两次
next()
[请注意不是两个]

替换

Iterator<String> iterator = (Iterator<String>) myList.iterator();
while (iterator.hasNext()) {//List tagListAux
        System.out.println("Test -> "+iterator.next());
        if(iterator.next().equalsIgnoreCase(myString)){
        flag = true;
}  

您有
iterator.next()
两次!调用它一次,然后使用它的值:
String value=iterator.next()

您有
迭代器。next()
两次!调用它一次,然后使用它的值:
String value=iterator.next()

使用methode迭代器时,只需使用
foreach
(Java 5+)循环

只需使用
foreach
(Java 5+)循环

。下一步(),增加Arraylist中的指针,同时执行两次,而不检查下一个元素是否存在(对于下一次调用)。这就是为什么你有一个“非接触式例外”

你必须这样做:

while (iterator.hasNext()) {//List tagListAux
        Object currentElement = iterator.next();
        System.out.println("Test -> "+ currentElement);
        if(currentElement .equalsIgnoreCase(myString)){
        flag = true;
}
while (iterator.hasNext()) {//List tagListAux 
        String s = iterator.next().toString();
        System.out.println("Test -> "+ s);
        if(s.equalsIgnoreCase(myString)){
            flag = true;
        }

}

Anhuin

当您使用methode迭代器.next()时,您在Arraylist中递增指针,并且在同一时间内执行两次,同时不检查下一个元素是否存在(对于下一次调用)。这就是为什么你有一个“非接触式例外”

你必须这样做:

while (iterator.hasNext()) {//List tagListAux
        Object currentElement = iterator.next();
        System.out.println("Test -> "+ currentElement);
        if(currentElement .equalsIgnoreCase(myString)){
        flag = true;
}
while (iterator.hasNext()) {//List tagListAux 
        String s = iterator.next().toString();
        System.out.println("Test -> "+ s);
        if(s.equalsIgnoreCase(myString)){
            flag = true;
        }

}

Anhuin

我认为您应该这样更改代码:

while (iterator.hasNext()) {//List tagListAux
        Object currentElement = iterator.next();
        System.out.println("Test -> "+ currentElement);
        if(currentElement .equalsIgnoreCase(myString)){
        flag = true;
}
while (iterator.hasNext()) {//List tagListAux 
        String s = iterator.next().toString();
        System.out.println("Test -> "+ s);
        if(s.equalsIgnoreCase(myString)){
            flag = true;
        }

}

我认为您应该这样更改代码:

while (iterator.hasNext()) {//List tagListAux
        Object currentElement = iterator.next();
        System.out.println("Test -> "+ currentElement);
        if(currentElement .equalsIgnoreCase(myString)){
        flag = true;
}
while (iterator.hasNext()) {//List tagListAux 
        String s = iterator.next().toString();
        System.out.println("Test -> "+ s);
        if(s.equalsIgnoreCase(myString)){
            flag = true;
        }

}
在速度方面也是最好的使用方式吗

在速度方面也是最好的使用方式吗