Java 为什么AbstractQueue和AbstractList是脱节的?
在我学习C语言的日子里,当我实现了Java 为什么AbstractQueue和AbstractList是脱节的?,java,design-patterns,collections,Java,Design Patterns,Collections,在我学习C语言的日子里,当我实现了队列,我在链接列表上实现了它们。因此,基本上我在链接列表上有两个指针(前面和后面)用于队列操作,或者在循环链接列表上有一个更好的前面指针 我正在学习Java集合框架,我注意到设计已经完全分离了列表和队列接口,实现以以下方式分支- 我认为AbstractQueue应该在AbstractList中的某个地方进行子类化。可能不在ArrayList内,因为我不想随机访问元素,但可能在AbstractSequentialList内,嗯?(我意识到,我在这里可能完全错了)
队列
,我在链接列表
上实现了它们。因此,基本上我在链接列表
上有两个指针(前面和后面)用于队列
操作,或者在循环链接列表
上有一个更好的前面指针
我正在学习Java集合框架
,我注意到设计已经完全分离了列表
和队列
接口,实现以以下方式分支-
我认为
AbstractQueue
应该在AbstractList
中的某个地方进行子类化。可能不在ArrayList
内,因为我不想随机访问元素,但可能在AbstractSequentialList
内,嗯?(我意识到,我在这里可能完全错了)我认为接口应该是不相交的,但正如您所确定的,在实现方法中存在一个链接。当将列表和队列视为黑盒时,它们在概念上与使用者不同,即使在如何使用链接列表实现它们之间存在链接。这听起来像是为了实现灵活性而做的事情:队列不必实现为列表(特别是优先级队列几乎肯定是其下的堆,这是一种比列表提供的更随机的访问结构)。这里不起作用吗?抽象队列不是抽象列表,因此它不应该从它继承。但是,它的实现可以使用一个,但通过组合而不是继承