如何在Java中进行非破坏性队列检查

5 java queue

我正在帮助我的儿子参加大学编程课程,我想我也需要上课.他完成了任务,但我不相信他是最好的方式.不幸的是,我无法以更好的方式工作.它显然更好,因为它还不起作用.

他被要求为扩展另一个类的类实现一些方法.

他被告知必须使用以下类定义,并且他无法在ListQueue中更改任何内容.

public class MyListQueue <AnyType extends Comparable<AnyType>> extends ListQueue<AnyType>
Run Code Online (Sandbox Code Playgroud)

下面是ListQueue中的内容

// Queue interface
//
// ******************PUBLIC OPERATIONS*********************
// void enqueue( x )      --> Insert x
// AnyType getFront( )    --> Return least recently inserted item
// AnyType dequeue( )     --> Return and remove least recent item
// boolean isEmpty( )     --> Return true if empty; else false 
// void makeEmpty( )      --> Remove all items
// ******************ERRORS********************************
// getFront or dequeue on empty queue

/**
 * Protocol for queues.
 */
Run Code Online (Sandbox Code Playgroud)

好吧,我觉得在Pascal或C中遍历链表(显示我的年龄)非常好,但之前从未使用过OOP语言.

当我尝试这样的事情

dummyQueue = this.front.next;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误. *Front在ListQueue中拥有私人访问权限*

我同意这一点,但除了使项目出列外,我如何遍历列表,或以其他方式访问ListQueue中的前,后,下一个和上一个.

教育将不胜感激.

谢谢,大卫

Kev*_*vin 2

如果我理解正确的话,你正在做这样的事情:

MyListQueue<String> dummyQueue = new MyListQueue<String>();
dummyQueue = this.front.next;
Run Code Online (Sandbox Code Playgroud)

如果是这样,OOP 的主要原则之一就是封装,即数据隐藏。这个想法是类外部的用户无权访问类的内部状态。

如果您希望确定队列的大小,并且无法修改接口或实现,则可以做的一件事是创建一个委托队列,该委托队列重写入队和出队以递增和递减计数器。