Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检索相同元素的哈希集_Java_Hashset - Fatal编程技术网

Java 检索相同元素的哈希集

Java 检索相同元素的哈希集,java,hashset,Java,Hashset,我之所以使用HashSet集合,是因为我对唯一(无重复)元素感兴趣。 我注意到我可以使用迭代器获取哈希集的所有元素。 我(简单的)问题是我是否可以检索同一个元素两次(或更多次)。更具体地说,在下面的代码中 HashSet<String> vectors = new HashSet<String>(); Iterator iterator = vectors.iterator(); String temp; while (iterator.hasNext()){

我之所以使用HashSet集合,是因为我对唯一(无重复)元素感兴趣。 我注意到我可以使用迭代器获取哈希集的所有元素。 我(简单的)问题是我是否可以检索同一个元素两次(或更多次)。更具体地说,在下面的代码中

HashSet<String> vectors = new HashSet<String>();
Iterator iterator = vectors.iterator(); 
String temp;
while (iterator.hasNext()){
    temp = (String) iterator.next();
    System.out.println("Next element inside HashSet is " + temp);
    out.write(temp + "\n");
}

我将只获取元素(仅显示另一半)。不是这样吗?

因为您只读取集合的元素,所以我建议使用一个循环,它基本上与您的代码(第一个代码片段)相同,但设计用于这种情况(在我看来更具可读性)

HashSet vectors=newhashset();
用于(字符串温度:向量){
System.out.println(“哈希集中的下一个元素是“+temp”);
out.write(临时+“\n”);
}

由于您只阅读集合的元素,因此我建议使用一个循环,它与您的代码(第一个代码片段)基本相同,但设计用于此类情况(在我看来更具可读性)

HashSet vectors=newhashset();
用于(字符串温度:向量){
System.out.println(“哈希集中的下一个元素是“+temp”);
out.write(临时+“\n”);
}

由于您只阅读集合的元素,因此我建议使用一个循环,它与您的代码(第一个代码片段)基本相同,但设计用于此类情况(在我看来更具可读性)

HashSet vectors=newhashset();
用于(字符串温度:向量){
System.out.println(“哈希集中的下一个元素是“+temp”);
out.write(临时+“\n”);
}

由于您只阅读集合的元素,因此我建议使用一个循环,它与您的代码(第一个代码片段)基本相同,但设计用于此类情况(在我看来更具可读性)

HashSet vectors=newhashset();
用于(字符串温度:向量){
System.out.println(“哈希集中的下一个元素是“+temp”);
out.write(临时+“\n”);
}

在HashSet.iterator中,如果不转到下一个元素,就无法检索元素

如果你想要这样的东西,请考虑使用带有POP、PUP和ToIP方法的堆栈。


尽管如此,我看不出有什么理由去做你对temp所做的事情。它是正常的,优雅的,直截了当的

在HashSet.iterator中,如果不转到下一个元素,就无法检索元素

如果你想要这样的东西,请考虑使用带有POP、PUP和ToIP方法的堆栈。


尽管如此,我看不出有什么理由去做你对temp所做的事情。它是正常的,优雅的,直截了当的

在HashSet.iterator中,如果不转到下一个元素,就无法检索元素

如果你想要这样的东西,请考虑使用带有POP、PUP和ToIP方法的堆栈。


尽管如此,我看不出有什么理由去做你对temp所做的事情。它是正常的,优雅的,直截了当的

在HashSet.iterator中,如果不转到下一个元素,就无法检索元素

如果你想要这样的东西,请考虑使用带有POP、PUP和ToIP方法的堆栈。


尽管如此,我看不出有什么理由去做你对temp所做的事情。它是正常的,优雅的,直截了当的

@Eypros,当您调用iterator.next()方法时,它将获取元素并下一步移动,这就是为什么您将获得半个元素。

@Eypros,当您调用iterator.next()方法时,它将获取元素并下一步移动,这就是为什么您将获得半个元素。

@Eypros,当您调用iterator.next()方法时,它获取元素并下一步移动,这就是为什么会得到半个元素。

@Eypros,当您调用iterator.next()方法时,它获取元素并下一步移动,这就是为什么会得到半个元素。

itt.next()调用从itr返回当前元素,将itr指针移动一个。如果您再次调用它,它将返回不相同的下一个元素

itt.next()调用从itr返回当前元素,将itr指针移动1。如果您再次调用它,它将返回不相同的下一个元素

itt.next()调用从itr返回当前元素,将itr指针移动1。如果您再次调用它,它将返回不相同的下一个元素

itt.next()调用从itr返回当前元素,将itr指针移动1。如果您再次调用它,它将返回不相同的下一个元素

来自
HashSet
迭代器将不会两次返回相同的
字符串。但是,在将返回值分配给变量后,您可以根据需要多次使用它,您已经这样做了

如果在迭代器上调用两次
next()
,它将返回两个后续元素(如果剩余元素不足,则抛出
NoSuchElementException

您的错误可能是假定
Iterator.hasNext()
更改Iterator的状态,前进到下一个位置
hasNext()
不会更改迭代器状态,可以调用任意次数。例如,要打印以逗号分隔的列表,但末尾不带逗号,请执行以下操作:

while (iterator.hasNext()){
    System.out.print(iterator.next());
    if (iterator.hasNext()) {
       System.out.print(iterator.next());
    }
}

来自
HashSet
迭代器将不会两次返回相同的
字符串。但是,在将返回值分配给变量后,您可以根据需要多次使用它,您已经这样做了

如果在迭代器上调用两次
next()
,它将返回两个后续元素(如果剩余元素不足,则抛出
NoSuchElementException

您的错误可能是假定
Iterator.hasNext()
更改Iterator的状态,前进到下一个位置
hasNext()
不会更改迭代器状态,可以调用任意次数。例如,要打印以逗号分隔的列表,但末尾不带逗号,请执行以下操作:

while (iterator.hasNext()){
    System.out.print(iterator.next());
    if (iterator.hasNext()) {
       System.out.print(iterator.next());
    }
}

来自
HashSet
迭代器将不会两次返回相同的
字符串。但是,您可以使用尽可能多的返回值
while (iterator.hasNext()){
    System.out.print(iterator.next());
    if (iterator.hasNext()) {
       System.out.print(iterator.next());
    }
}
System.out.println("Next element inside HashSet is " + iterator.next());
out.write(iterator.next() + "\n");