【发布时间】:2014-04-02 16:29:11
【问题描述】:
这里的类VectorQueue是一个实现向量方法的队列数据结构。在底部的测试类中,我可以成功编译诸如“myVector.enqueue(20);”之类的代码,其中 myVector 是VectorQueue 类的一个实例。它的实际类型是Queue - 见这里
Queue<Integer> myVector = new VectorQueue<Integer>();
我的问题是:一旦实例“myVector”被实现为队列类型,就没有办法在实例“myVector”上使用向量方法吗?我尝试了以下方法:
((Vector<T>) myVector).insertAtRank(2,5);
我也尝试让我的主类 VectorQueue 实现 Queue 和 Vector 接口,但没有帮助。我也想知道,为什么一个东西不能有多个实现类型?
package W7;
public class VectorQueue<T> implements Queue<T> {
public Vector<T> myVector = new ArrayVector<T>();
public void enqueue(T e) {
myVector.insertAtRank(myVector.size(), e);
}
public T front() {
return myVector.elemAtRank(0);
}
public T dequeue() {
return myVector.removeAtRank(0);
}
public boolean isEmpty() {
return myVector.isEmpty();
}
public int size() {
return myVector.size();
}
public String toString(){
return myVector.toString();
}
public static void main(String[] args) throws VectorFullException,
RankOutOfBoundsException {
Queue<Integer> myVector = new VectorQueue<Integer>();
try {
myVector.enqueue(10);
System.out.println(myVector);
myVector.enqueue(5);
System.out.println(myVector);
myVector.dequeue();
System.out.println(myVector);
myVector.enqueue(15);
System.out.println(myVector);
myVector.enqueue(3);
System.out.println(myVector);
myVector.dequeue();
System.out.println(myVector);
myVector.enqueue(7);
System.out.println(myVector);
myVector.dequeue();
System.out.println(myVector);
myVector.enqueue(20);
System.out.println(myVector);
((Vector<T>) myVector).insertAtRank(2,5);
} catch (VectorFullException RankOutOfBoundsException) {
System.out.println("Error");
}
int total = 0;
while(! myVector.isEmpty()){
total += myVector.dequeue();
}
System.out.println("The total size of the contents: " + total);
}
}
【问题讨论】:
标签: java types interface queue abstract-data-type