Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取ArrayStack而不清空它,此方法无效_Java_Stack - Fatal编程技术网

Java 读取ArrayStack而不清空它,此方法无效

Java 读取ArrayStack而不清空它,此方法无效,java,stack,Java,Stack,在java中,我编写了一个基于数组的堆栈程序,我想编写一个方法 读取ArrayStack的所有元素而不清空它,因为 函数将清空ArrayStack。有什么想法吗 public static <E> void aufgaben(ArrayStack<E> a) { ArrayStack<E> b = a; ArrayStack<E> c = b; ArrayStack<E> d = c; while (!

在java中,我编写了一个基于数组的堆栈程序,我想编写一个方法 读取ArrayStack的所有元素而不清空它,因为 函数将清空ArrayStack。有什么想法吗

public static <E> void aufgaben(ArrayStack<E> a) {
    ArrayStack<E> b = a;
    ArrayStack<E> c = b;
    ArrayStack<E> d = c;

    while (!c.isEmpty()) {
        System.out.println(c.pop());
    }

}

我们不能确定任何事情,因为您的问题没有告诉我们ArrayStack类正在实现什么API

但是,方法不起作用的可能原因是pop正在从堆栈中删除元素。没有什么能让他们回头

这些声明毫无意义:

    ArrayStack<E> b = a;
    ArrayStack<E> c = b;
    ArrayStack<E> d = c;
你所做的与从a中弹出相当

Java中对象的赋值不会复制该对象。如果愿意,它只复制对象引用指针。因此,a、b和c都指向同一个对象

我猜这是家庭作业,所以这里有一两个提示

或者在API中寻找一种方法,该方法允许您在不删除元素的情况下检查堆栈

如果没有,请考虑在拆下堆栈后重建堆栈的方法。肯定有办法。想想看。提示:第二个堆栈


我可以问一下:为什么?有什么想法吗?让您的ArrayStack类实现Iterable并实现迭代器方法以返回迭代器,这样您就可以在for循环中使用ArrayStack,比如MyObj:ArrayStack请不要将您的问题添加为Javadoc。Javadoc是用来记录方法本身的。这是为了描述它的功能、参数的用途等。是来自Commons集合的ArrayStack吗?如果是,那么它将扩展ArrayList adn,您可以使用getindex方法。