【问题标题】:Unable to print the hashset element using Iterator for second time?无法第二次使用 Iterator 打印 hashset 元素?
【发布时间】:2020-06-16 18:38:48
【问题描述】:

我需要在删除一个元素后打印散列集元素。使用迭代器并提供 sysout 不起作用,并且使用 hashset obj 提供 sysout 只会在删除元素的情况下打印它。为什么? 如果我们能够使用 sysout 打印对象,为什么要使用迭代器?

下面是我的代码:

package collectionprg;

import java.util.HashSet;
import java.util.Iterator;

public class RemoveElementHashSet {

    public static void main(String[] args) {


        HashSet<Integer> hs= new HashSet<Integer>();

        hs.add(12);
        hs.add(234);
        hs.add(123);
        hs.add(12);


        Iterator<Integer> it = hs.iterator();

        while(it.hasNext())
        {
            System.out.println(it.next());
        }


    System.out.println("afterremoval"); 

    hs.remove(234);

    while(it.hasNext())
    {
        System.out.println(it.next());
    }   

    System.out.println(hs);

    }

}

【问题讨论】:

    标签: java collections printing iterator hashset


    【解决方案1】:

    使用IteratorHashSet 的元素进行迭代后,hasNext() 将始终返回false

    如果您希望执行第二次迭代,您必须通过再次调用 it = hs.iterator(); 创建第二个 Iterator

    // first iteration
    Iterator<Integer> it = hs.iterator();
    while(it.hasNext()) {
        System.out.println(it.next());
    }
    
    System.out.println("afterremoval"); 
    hs.remove(234);
    
    // second iteration
    it = hs.iterator();
    while(it.hasNext()) {
        System.out.println(it.next());
    } 
    

    【讨论】:

    • 创建第二个迭代器后它工作了。谢谢伊兰。
    猜你喜欢
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多