繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM