[英]How to call toString() method of all objects in a Stack?
我有一个类(myObject)有自己的toString()方法。 然后我创建了另一个名为myStack的类,它扩展了Stack。 该类应该是myObject对象的堆栈。
当我尝试使用迭代器迭代堆栈来打印每个对象时,它会抛出ConcurrentModificationException。
这是我的代码:
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对象(请将类重命名为MyStack
), 然后修改堆栈 ,然后使用迭代器,因为你在修改堆栈后使用了迭代器,所以不会飞。 相反,你需要提取迭代器的顶部在使用前printStack()
方法,所以它是一个有效的和稳定的迭代器,代表了堆叠当时的状态。
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());
}
}
另外,您将需要学习和使用Java命名约定 。 变量名都应以较低的字母开头,而类名以大写字母开头。 学习这一点并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.