Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么AbstractQueue和AbstractList是脱节的?_Java_Design Patterns_Collections - Fatal编程技术网

Java 为什么AbstractQueue和AbstractList是脱节的?

Java 为什么AbstractQueue和AbstractList是脱节的?,java,design-patterns,collections,Java,Design Patterns,Collections,在我学习C语言的日子里,当我实现了队列,我在链接列表上实现了它们。因此,基本上我在链接列表上有两个指针(前面和后面)用于队列操作,或者在循环链接列表上有一个更好的前面指针 我正在学习Java集合框架,我注意到设计已经完全分离了列表和队列接口,实现以以下方式分支- 我认为AbstractQueue应该在AbstractList中的某个地方进行子类化。可能不在ArrayList内,因为我不想随机访问元素,但可能在AbstractSequentialList内,嗯?(我意识到,我在这里可能完全错了)

在我学习C语言的日子里,当我实现了
队列
,我在
链接列表
上实现了它们。因此,基本上我在
链接列表
上有两个指针(前面和后面)用于
队列
操作,或者在
循环链接列表
上有一个更好的前面指针

我正在学习Java
集合框架
,我注意到设计已经完全分离了
列表
队列
接口,实现以以下方式分支-


我认为
AbstractQueue
应该在
AbstractList
中的某个地方进行子类化。可能不在
ArrayList
内,因为我不想随机访问元素,但可能在
AbstractSequentialList
内,嗯?(我意识到,我在这里可能完全错了)

我认为接口应该是不相交的,但正如您所确定的,在实现方法中存在一个链接。当将列表和队列视为黑盒时,它们在概念上与使用者不同,即使在如何使用链接列表实现它们之间存在链接。

这听起来像是为了实现灵活性而做的事情:队列不必实现为列表(特别是优先级队列几乎肯定是其下的堆,这是一种比列表提供的更随机的访问结构)。

这里不起作用吗?抽象队列不是抽象列表,因此它不应该从它继承。但是,它的实现可以使用一个,但通过组合而不是继承