队列Queue:一个被遗失的java.util类(完)

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

队列Queue:一个被遗失的java.util类

第二种方法

为了克服上面提及到的性能问题,这个方法中,队列Queue类的实现建立在链接表Linkedlist类的基础上,因为链接表Linkedlist对于第一个元素的删除不会导致其它剩余元素位置的移动。

public class Queue2 extends LinkedList

{

public Object enqueue (Object element)

{

add (element);

return element;

}

public Object dequeue ()

{

if (size()== 0)

throw new EmptyQueueException() ;

return removeFirst();

}

}

然而,就是我们在方法中应用的继承关系导致了一个问题。使得Queue2 class 的使用者可以调用一些像addFirst、getLast 等等这些继承来的函数方法,导致一些无法预期的错误。

第三种方法

在这个方法中对象组合方式将代替继承方式。一般来讲,对象组合方式优于继承方式,它提供了较小而且比较集中的类和较小规模的继承层次,很多的设计者过分使用继承,导致了庞大的继承层次关系,以至于变得很难维护和处理。一个基于对象组合的设计会有相对较少的类文件,但同时会产生较多的对象了。

public class Queue

{

private LinkedList items;

public Object enqueue (Object element)

{

items.add (element);

return element;

}

public Object dequeue ()

{

if (items.size()== 0)

throw new EmptyQueueException() ;

return items.removeFirst();

}

}

这种实现方式实现了一个更加强大,更加集中的队列Quene 类,但开发者需要明确地对所有需要的接口进行编码处理(像size,empty,indexOf等方法)。这种方法完整的代码可以下载获得:

下载代码

Translated by windowsDNA 2004/01/08

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航