Stack学习时遇到问题(接口中方法实现时错误)
来源:3-2 栈的基本实现
就干万元户
2018-12-03
老师你好,在学习Stack简单实现时遇到如下问题
1.我们对于Stack的实现是基于数组进行的,那是否可以理解成栈的底层其实就是使用数组实现的,只不过进行了存取方式上简单的改动(先进后出的特点)
2.在进行Stack简单实现时遇到问题,实现接口中void push(E e);接口时出现错误
提示:然后我在接口中方法提示部分进行了自动实现如下图:
自动实现之后是这样的(参数部分的类型不是泛型而是Object)
然后我检查了一下,自己定义的Stack接口和ArrayStack的泛型确实是E类型的
所以不知道问题出在哪,请老师帮忙解答,并且告知原因,下面是完整的源代码
接口Stack
public interface Stack<E> {
int getSize();
boolean isEmpty();
void push(E e);
E pop();
E peek();
}
实现类ArrayStack
public class ArrayStack<E> implements Stack{
Array<E> array;
public ArrayStack(int capacity){
array = new Array<>(capacity);
}
public ArrayStack(){
array = new Array<>();
}
@Override
public int getSize(){
return array.getSize();
}
@Override
public boolean isEmpty(){
return array.isEmpty();
}
@Override
public void push(Object o) {
array.addLast(o);
}
public int getCapacity(){
return array.getCapacity();
}
@Override
public E pop(){
return array.removeLast();
}
@Override
public E peek(){
return array.getLast();
}
}
谢谢!
写回答
1回答
-
1
可以:)Java标准库中的Stack就是基于动态数组实现的。
但是在课程后面,你会看到,使用链表也可以实现栈:)栈本身是一种抽象数据结构:)
2
这个课程的所有代码都可以通过官方github获得,传送门:https://github.com/liuyubobobo/Play-with-Data-Structures
请尝试在你的环境运行官方代码,看是否有同样的问题?如果没有问题,请仔细比较调试自己的代码实现和官方代码的区别:)
如果也有问题,请确认一下自己的环境的JDK是8或者以上版本。本课程的所有Java代码都是基于JDK8的:)
==========
提示:
ArrayStack的声明应该是:public class ArrayStack<E> implements Stack<E>
因为Stack接口也需要泛型:)
加油!:)
222018-12-03
相似问题