首页 > 解决方案 > 列表接口(将链接列表添加到列表列表中)

问题描述

我刚刚遇到了这个有效的代码

List<List<Integer>> parentList = new ArrayList<>();
LinkedList<Integer> curList = new LinkedList<>();
parentList.add(curList);

我想我有点被甩了,因为我没想到你可以将 LinkedList 添加到声明为 List 的东西中。我以为你必须做类似的事情

List<Integer>curList = new LinkedList<>();
parentList.add(curList);

我认为将 LinkedList 或 ArrayList 声明/初始化为 List 的全部意义在于,即使它们是作为 LinkedLists 和 ArrayLists 实现的,您也可以将它们添加到 List 中。

编辑:或者我对我们将其作为抽象层执行这一事实感到困惑 - 我们将其声明为 List 以便即使它由数组列表和链接列表组成,我们仍然可以在所有这些上使用相同的 List 接口函数. 我们可以将链接列表添加到列表列表中,因为链接列表只是实现了 List 接口

标签: javalistarraylistlinked-list

解决方案


LinkedListextendsAbstractSequentialList依次延伸AbstractListArrayList延伸AbstractList。所以两者LinkedListArrayList底层都扩展了同一个子类。接口上的add方法对List添加相似类型的元素有限制。因此两者LinkedListArrayList都被认为是相似的,因此可以添加。

同样在逻辑上添加LinkedList不会改变其中元素的行为,因为即使在添加到列表之后也会保持顺序。


推荐阅读