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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ERROR: Launching agent process aborted. Also: java.lang.Throwable: launched here at hudson.slaves.SlaveComputer._connect(SlaveComputer.java:287) at hudson.model.Computer.connect(Computer.java:447) at hudson.slaves.SlaveComputer.tryReconnect(SlaveComputer.java:854) at hudson.slaves.RetentionStrategy$Always.check(RetentionStrategy.java:173) at hudson.slaves.RetentionStrategy$Always.check(RetentionStrategy.java:161) at hudson.slaves.ComputerRetentionWork$1.run(ComputerRetentionWork.java:71) at hudson.model.Queue._withLock(Queue.java:1397) at hudson.model.Queue.withLock(Queue.java:1271) at hudson.slaves.ComputerRetentionWork.doRun(ComputerRetentionWork.java:62) at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:92) at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:67) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) java.lang.InterruptedException: Validate configuration: The Host must be specified The selected credentials cannot be found at hudson.plugins.sshslaves.SSHLauncher.checkConfig(SSHLauncher.java:925) at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:411) at hudson.slaves.SlaveComputer.lambda$_connect$0(SlaveComputer.java:298) at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46) at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:80) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值