O mesmo Iterator só pode ser percorrido uma vez

Quando eu estava aprendendo hoje, quando encontrei um iterador para percorrer a coleção, não havia saída de elemento. Depois de pensar nisso por um longo tempo, percebi que "o mesmo iterador só pode ser percorrido uma vez. Se duas travessias forem escritas, a segunda travessia não pode produzir "

O motivo do meu problema é "Quero excluir um elemento da coleção e, em seguida, percorrer a saída, mas o resultado da saída ainda não foi excluído antes"

public void test5(){
    
    
        /*
        迭代器当中的 remove方法
         */
        Collection collection=new ArrayList();
        collection.add(1234);
        collection.add(new String("123"));
        collection.add(new Person(18,"Jerry"));
        Iterator iterator = collection.iterator();

        while (iterator.hasNext()){
    
    
            Object next = iterator.next();//next() 方法返回的是下一个对象
            if (next.equals("123")){
    
    
                iterator.remove();
            }
            System.out.println(next+"***");
        }

        while (iterator.hasNext()){
    
    
            System.out.println(iterator.next()+"$$$$");
        }

    }
运行结果	:这就说明下一个迭代器根本没执行
1234***
123***
Person{age=18, name='Jerry'}***

Depois de ler as informações, descobri que o mesmo iterador só pode ser percorrido uma vez, então criei outro iterador para resolver o problema

  public void test5(){
    
    
        /*
        迭代器当中的 remove方法
         */
        Collection collection=new ArrayList();
        collection.add(1234);
        collection.add(new String("123"));
        collection.add(new Person(18,"Jerry"));
        Iterator iterator = collection.iterator();

        while (iterator.hasNext()){
    
    
            Object next = iterator.next();//next() 方法返回的是下一个对象
            if (next.equals("123")){
    
    
             iterator.remove();
           }
            System.out.println(next+"***");
        }
        Iterator iterator1 = collection.iterator();
        while (iterator1.hasNext()){
    
    
            System.out.println(iterator1.next()+"$$$$");
        }
    }
修改后的运行结果:正常遍历输出了 
1234***
123***
Person{age=18, name='Jerry'}***
1234$$$$
Person{age=18, name='Jerry'}$$$$

Resumo: O processo de resolução de problemas é doloroso, mas soluções bem-sucedidas deixam as pessoas realmente felizes! ! !

Acho que você gosta

Origin blog.csdn.net/weixin_46351306/article/details/113705527
Recomendado
Clasificación