为了账号安全,请及时绑定邮箱和手机立即绑定

如何调用堆栈中所有对象的 toString() 方法?

如何调用堆栈中所有对象的 toString() 方法?

Qyouu 2022-07-27 20:43:32
我有一个类(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());        }    }} 我在迭代堆栈时没有修改堆栈,所以我不明白为什么会抛出异常。
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

你的问题是当你得到迭代器时。您在创建 myStack 对象时得到它(请将类重命名为MyStack),然后修改 stack,然后使用迭代器,这不会飞,因为您在修改堆栈后使用迭代器。相反,您需要在方法顶部使用之前提取迭代器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 命名约定。变量名应全部以小写字母开头,而类名应以大写字母开头。学习这一点并遵循这一点将使我们更好地理解您的代码,并使您更好地理解其他人的代码。


查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信