java.util包 - 类和接口

Sid*_*tha 8 java queue stack interface

为什么Queue是一个接口,但像StackArrayList这样的其他类是什么?

我知道接口是这样的,客户端可以实现它们并添加自己的方法,而对于类,如果每个客户端都需要它们的方法,它将变得庞大和膨胀.

......或者我在这里遗失了什么?

old*_*inb 7

A Queue可以以多种方式实现,a List或a 也可以Set.它们都只是为不同类型的集合指定合同.

ArrayList然而,An 是a的特定实现,用于List在内部使用数组来存储元素.LinkedList也是a的实现List,它使用一系列互连的节点,即双向链表.类似地,TreeSet并且HashMap分别是集合和映射的特定实现.

现在,这Stack是一个奇怪的例子,特别是因为它是旧版Java的遗留类.你真的不应该再使用Stack了; 相反,你应该使用它的现代等价物,ArrayDeque.ArrayDeque是一个Deque(一个双端队列)的实现,它在内部使用一个数组进行存储(这就是做什么Stack).一个Deque支持所有的操作的Stack,比如pop,push等的其他实现方式Deque包括LinkedList,正如别人所说,虽然这从偏离Stack在底层它不是一个数组,而是一个双向链表:-P

现在,有很多实现Queue和许多不同类型的Queues.你不仅有BlockingQueueS(通常用于生产者-消费者),其共同实现包括LinkedBlockingQueueArrayBlockingQueue,而且TransferQueues和等等.我离题了......您可以在相关的Java教程中阅读有关集合API的更多信息.