2013-10-26 5 views
0

Итак, у меня есть очередь (реализована связанным списком), полная объектов «Автомобиль». Моя основная цель - перенести каждый объект из очереди в стеки, зависящий от параметра «num» объекта.Перемещение объекта из очереди в стек

Один из параметров объекта «Автомобиль» в его конструкторе «num». Я хочу сказать, что-то вроде

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

Но это обыкновение позвольте мне делать "если (queue.peek(). Num == 2")

Так какие идеи? (кстати, его версия очереди Java не является обычным.)

+1

* Почему бы вам не позволить это сделать? Какую ошибку вы получаете? – templatetypedef

+0

Вам нужно будет показать нам свой класс 'Car' и, возможно, реализацию' peek'. Я предполагаю, что атрибут 'num' в' Car' недоступен, но вы не указали достаточно информации, чтобы точно знать. – Aurand

ответ

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.

+0

нет, я сделал то же самое, он все равно не позволит мне получить доступ к его параметрам. – user2855405

+0

Тогда вам нужно будет добавить дополнительную информацию к вашему вопросу. Это было просто предположение, основанное на ограниченной информации. –

Смежные вопросы