您可以在这里快速查找:


 
您的位置: 编程学习 > java教程 > 200505
文章分类

Java技术
2005: 03 04 05 06 07 08
09 10 11 12
2006: 01 02

Asp.net
2005: 07 08 09 10 11 12
2006: 01 02

VB编程
2006: 02

Asp编程
2005: 11 12
2006: 01 02

C++/VC
2005: 10 11 12
2006: 01 02

Delphi
2005: 12
2006: 01 02

其它

 本文章适合所有读者

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

windowsDNA

                            队列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