将对象从队列移动到堆栈中

时间:2013-10-26 01:13:51

标签: java stack queue

所以我有一个充满“Car”对象的Queue(由链表实现)。 我的主要目标是根据对象的“num”参数将每个对象从队列转移到堆栈中。

其构造函数中的“Car”对象参数之一是“num”。 我想说点什么

if(the object @ head of queue's "num" == 2)
{
Stack1.push(queue.remove());
}

但它不会让我做“if(queue.peek()。num == 2”)

那么任何想法? (顺便说一下,它的Java版本的队列不是自定义的。)

1 个答案:

答案 0 :(得分:0)

您可能没有正确使用泛型来让编译器知道您尝试做的事情是可以的。即你可能会说:

Queue cars = ...;
if (cars.peek().num == 2) ...

相同
Queue cars = ...;
Object car = cars.peek();
if (car.num == 2) ...

显然无法使用,因为Object没有num字段。相反,你可能想要:

Queue<Car> cars = ...;
if (cars.peek().num == 2) ...

就像说

Queue<Car> cars = ...;
Car car = cars.peek();
if (car.num == 2) ...

这更合理。类型参数<Car>让编译器知道此Queue只能 包含Car个对象,因此访问其上的num字段是安全的