无法使用Iterator第二次打印哈希集元素?

问题描述 投票:0回答:1

删除一个元素后,我需要打印哈希集元素。使用迭代器并赋予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个回答
1
投票

使用HashSet完成对Iterator元素的迭代之后,hasNext()将始终返回false

如果要执行第二次迭代,则必须通过再次调用Iterator创建第二个it = hs.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());
} 
© www.soinside.com 2019 - 2024. All rights reserved.