java - 列表接口(将链接列表添加到列表列表中)
问题描述
我刚刚遇到了这个有效的代码
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 接口
解决方案
LinkedList
extendsAbstractSequentialList
依次延伸AbstractList
和ArrayList
延伸AbstractList
。所以两者LinkedList
和ArrayList
底层都扩展了同一个子类。接口上的add
方法对List
添加相似类型的元素有限制。因此两者LinkedList
和ArrayList
都被认为是相似的,因此可以添加。
同样在逻辑上添加LinkedList
不会改变其中元素的行为,因为即使在添加到列表之后也会保持顺序。
推荐阅读
- amazon-ec2 - 具有 Aws 工作程序节点的 GKE
- awk - 如何让 grep 返回与字符串匹配的文件名而忽略其他字符串?
- php - Laravel withCount 包含空关系
- python - 使用同一数据框中其他 2 列的值从列创建 2D 列表
- matlab - 为什么 Matlab 的“intlinprog”返回整数变量的近似整数?
- centos7 - 在 Centos 7 中安装 Android SDK
- visual-studio-code - 如何将调试菜单移动到 Visual Studio Code 中的页脚或问题视图?
- excel - range.values 循环复制空白值
- android - android:系统范围的音频响度归一化
- postgresql - pg_dump 阻止使用同一用户访问 Postgres 数据库