gpt4 book ai didi

java - 如何调用 Stack 中所有对象的 toString() 方法?

转载 作者:行者123 更新时间:2023-11-29 04:11:06 24 4
gpt4 key购买 nike

我有一个类 (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() 方法的顶部使用之前提取迭代器,以便它是一个有效且稳定的迭代器,它代表堆栈的状态 at那个时候

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 naming conventions .变量名应全部以小写字母开头,而类名应以大写字母开头。了解并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他人的代码。

关于java - 如何调用 Stack 中所有对象的 toString() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com