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