迭代器和如果

k.b*_*.bo 0 java iterator if-statement

我的程序有点问题.

Iterator<MyString> it = globalSet.iterator();
Iterator<String> it2 = globalArray.iterator();



        while(it.hasNext() && it2.hasNext())
        {
            System.out.println(it2.next());
            if(it.next().getLine().contains(it2.next()) == true)
            {


                //it.remove();
            }

        }
Run Code Online (Sandbox Code Playgroud)

如果我禁用if子句我的输出是正确的,如下所示:

1;Trägertour 096;1410;Autotour 1N410;
2;Trägertour 097;1410;Autotour 1N410;
3;Trägertour 098;1410;Autotour 1N410;
4;Trägertour 099;1410;Autotour 1N410;
5;Trägertour 100;1410;Autotour 1N410;
Run Code Online (Sandbox Code Playgroud)

但是如果if子句被启用,我的输出看起来像这样:

1;Trägertour 096;1410;Autotour 1N410;
3;Trägertour 098;1410;Autotour 1N410;
5;Trägertour 100;1410;Autotour 1N410;
Run Code Online (Sandbox Code Playgroud)

所以为什么?

Era*_*ran 5

在while循环的同一次迭代中两次前进相同的迭代器(通过调用it2.next()两次).你不应该.

    while(it.hasNext() && it2.hasNext()) {
        String str = it2.next();
        System.out.println(str);
        if(it.next().getLine().contains(str)) {
            //it.remove();
        }
    }
Run Code Online (Sandbox Code Playgroud)