Java 如何调用堆栈中所有对象的toString()方法?
我有一个类(myObject),它有自己的toString()方法。然后我创建了另一个名为myStack的类,它扩展了Stack。这个类应该是myObject对象的堆栈 当我尝试使用迭代器在堆栈上迭代以打印每个对象时,它会抛出ConcurrentModificationException 这是我的密码:Java 如何调用堆栈中所有对象的toString()方法?,java,data-structures,stack,concurrentmodification,Java,Data Structures,Stack,Concurrentmodification,我有一个类(myObject),它有自己的toString()方法。然后我创建了另一个名为myStack的类,它扩展了Stack。这个类应该是myObject对象的堆栈 当我尝试使用迭代器在堆栈上迭代以打印每个对象时,它会抛出ConcurrentModificationException 这是我的密码: public class myStack extends Stack<myObject> { Iterator<myObject> iter = this.it
public class myStack extends Stack<myObject> {
Iterator<myObject> iter = this.iterator();
public void printStack(){
while(iter.hasNext()){
myObject temp = iter.next();
System.out.print(temp.toString());
}
}
}
公共类myStack扩展堆栈{
迭代器iter=this.Iterator();
公共void printStack(){
while(iter.hasNext()){
myObject temp=iter.next();
系统输出打印(temp.toString());
}
}
}
在迭代堆栈时,我没有修改堆栈,因此我不明白为什么会抛出异常。您的问题在于获取迭代器时。您将在myStack对象创建时获得它(请将类重命名为myStack
),然后修改堆栈,然后使用迭代器,而这不会发生,因为您在修改堆栈后使用迭代器。相反,您需要在printStack()
方法顶部使用之前提取迭代器,以便它是一个有效且稳定的迭代器,表示当时堆栈的状态
公共类MyStack扩展堆栈{
公共void printStack(){
迭代器iter=this.Iterator();//***此处***
while(iter.hasNext()){
myObject temp=iter.next();
系统输出打印(temp.toString());
}
}
顺便说一句,您需要学习和使用。变量名都应该以小写字母开头,而类名应该以大写字母开头。学习这一点并遵循这一点可以让我们更好地理解您的代码,也可以让您更好地理解其他人的代码
public class MyStack extends Stack<myObject> {
public void printStack() {
Iterator<myObject> iter = this.iterator(); // *** here***
while(iter.hasNext()) {
myObject temp = iter.next();
System.out.print(temp.toString());
}
}