Java 在向量中的元素上迭代,以循环方式从最后一个元素环绕到第一个元素
我试图遍历包含随机生成的int值的排序向量对象。其思想是访问每个元素,输出其值,然后转到下一个元素 问题是我的迭代只访问/输出其他元素,而不是每个元素。我的代码如下:Java 在向量中的元素上迭代,以循环方式从最后一个元素环绕到第一个元素,java,vector,iteration,Java,Vector,Iteration,我试图遍历包含随机生成的int值的排序向量对象。其思想是访问每个元素,输出其值,然后转到下一个元素 问题是我的迭代只访问/输出其他元素,而不是每个元素。我的代码如下: //note 'tempRequests' is a vector object containing randomly generated //int values int i = 0; Collections.sort(tempRequests); System.out.pri
//note 'tempRequests' is a vector object containing randomly generated
//int values
int i = 0;
Collections.sort(tempRequests);
System.out.println("request vector is now: ");
System.out.println(tempRequests);
Vector<Integer> requestCopy = new Vector<Integer>();
requestCopy = tempRequests;
//for (int i = currentPosition; i < tempRequests.size()-1; i++)
while (requestCopy.size() > 0)
{
if (requestCopy.contains(tempRequests.get(i)))
{
System.out.println("Processing " + tempRequests.get(i));
requestCopy.removeElement(tempRequests.get(i));
}
if (i+1 <= tempRequests.size()-1)
i++;
else
i = 0;
}
我尝试过调整for循环,但不太明白为什么只访问其他元素。任何帮助或建议都将不胜感激。谢谢。从
if (requestCopy.contains(tempRequests.get(i))) {
System.out.println("Processing " + tempRequests.get(i));
requestCopy.removeElement(tempRequests.get(i));
}
到
此代码与您认为的不同:
Vector<Integer> requestCopy = new Vector<Integer>();
requestCopy = tempRequests;
因为你想要做的只是简单地迭代一个向量,打印出这些值,而不是创建一个拷贝,并且必须管理打印和从复制中移除元素,考虑使用迭代器。
Iterator value = tempRequests.iterator();
while(value.hasNext()){
System.out.println("Processing: " + value.next());
}
以上四行代码将替换创建requestCopy向量的所有代码和您拥有的整个while循环 我认为您的requestCopy和tempRequests是对一个向量对象的两个引用
Vector requestCopy=new Vector()代码>这一行您创建了新的向量,然后用引用tempRequests的对象替换新的向量对象。您不能以这种方式复制对象
删除requestCopy=tempRequests代码>和更新Vector requestCopy=new Vector()代码>至矢量请求复制=新矢量(临时请求)代码>
然后它就会起作用
我希望能帮助您,谢谢。requestCopy
和tempRequests
引用同一个向量对象,因此requestCopy.contains(tempRequests.get(I))
不能为false。
Vector<Integer> requestCopy = new Vector<Integer>();
requestCopy = tempRequests;
Vector<Integer> requestCopy = new Vector<>(tempRequests);
Iterator value = tempRequests.iterator();
while(value.hasNext()){
System.out.println("Processing: " + value.next());
}