List和ArrayList

2023-11-07

List和ArrayList区别

  • List是一个接口,而ArrayList是List接口的一个实现类
  • ArrayList类继承并实现了List接口

因此,List接口不能创建实例对象,但是可以为List接口创建一个指向自己的对象引用。而ArrayList实现类的实例对象就在这充当指向List接口的对象引用。

List<String> list = new ArrayList<>();

这体现了面向对象的多态性

List list = new List();//报错
List list = new ArrayList();//正确
    ArrayList arrayList = new ArrayList();
    list.trimToSize();//错误,没有该方法
    arrayList.trimToSize();//正确,ArrayList里有该方法

它就是一个List对象,而有些ArrayList类具有的,但是List接口没有的属性和方法,就不能再用了。 而ArrayList list=new ArrayList();

创建对象则保留了ArrayList的所有属性和方法。

问题的关键:为什么要用List list = new ArrayList(),而不用ArrayList alist = new ArrayList()呢?
问题就在于List接口有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如LinkedList或者Vector等等,这时你只要改变这一行就行了: List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。

假设你开始用ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了ArrayList实现类特有的方法和属性。

这样的好处是为了代码的可维护性,可复用性,可扩展性以及灵活性,再者就是这符合了里氏代换原则和开闭原则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

List和ArrayList 的相关文章

随机推荐

  • 胡立阳:如何判断股价见底

    胡立阳 如何判断股价见底 发表时间 2007年11月28日 17时56分 评论 浏览 248 213844 腾讯证券 最近A股指数在6100点一路下滑 跌破半年线 国内各个媒体众说纷纭 观点不一 都在判断底部到底在哪里 就此问题 腾讯证券连
  • AntD的Table表头title加Icon图标和气泡提示Tooltip

    如图 想在Table表单中的描述后面加上Icon图标和气泡提示Tooltip 第一时间找了AntD文档 找到搜索功能及相应图标 filterDropdown和filterIcon 也在百度上找到https www jianshu com p
  • QT基础(入门)

    对QT文件中的 pro文件解释 QT core gui QT包含的模块 QT中的快捷键 注释 ctr 运行 ctrl r 编译 ctrl b 查找 ctrl f 整行移动 ctrl shift 向上键 向下键 帮助文档 F1 自动对齐 ct
  • Android Studio NDK JNI 编程最小白最简单入门Demo

    Android Studio 编写JNI有两种方式 通过ndk build编写 和eclipse类似 需要配置Android mk Application mk文件 之前的一些开源库还是使用此种方式编写 so 因此还是需要了解此种方式 通过
  • C++拷贝构造函数详解

    一 什么是拷贝构造函数 首先对于普通类型的对象来说 它们之间的复制是很简单的 例如 int a 100 int b a 而类对象与普通对象不同 类对象内部结构一般较为复杂 存在各种成员变量 下面看一个类对象拷贝的简单例子 include
  • Qlik Sense Desktop 初步体验

    点击进入 QlikView QlikSense 社区 交流群 432998033 Qlik Sense Desktop 的案例展示 先上几个刚刚边看边学完成的几个报表案例效果 如果图片显示不正常 可以重新刷新一下页面显示 个人感觉报表的设计
  • C语言扫雷游戏

    一 思路 设计两个二维数组 mine和show mine用来存放布置雷的信息 show用来存放排查雷的信息 mine数组初始化为 0 布置雷时改为 1 show数组初始化为 排除雷后改为数字字符 周围有几个雷就为数字几 二 game函数 先
  • 【Spring

    应用上下文 应用上下文和资源路径 构造应用上下文 构造ClassPathXmlApplicationContext实例 快捷方式 使用通配符 蚂蚁式图案 类路径 前缀 应用上下文和资源路径 本节介绍如何使用资源创建应用程序上下文 包括使用
  • 线程的生命周期

    线程的生命周期
  • opencv将16位灰度图片转化为8位

    大家在加载灰度图时 一定要看准图片存储格式位数 opencv默认为8位读取 如果该图为16位 则读取为全0 导致程序出错 以下代码只需修改路径 可以批量处理图片 include
  • 手机相关公开数据集分享

    可用于手机价格预测 图像分类等训练 1 Flipkart 手机数据集 按品牌列出的手机规格 Apple Samsung 等 该数据集包含印度最受欢迎的 5 个移动品牌的描述 列 有 16 列 每列都有一个不言自明的标题 行 有 430 行
  • python爬虫二十一:app移动端数据抓取(一)

    1 移动端app数据 1 1为什么要抓取移动端数据 随着时代的发展 pc gt 移动端 gt 大数据 gt AI 人工智能未来 对于做数据分析 用户画像 市场调研来说仅仅参考PC端的数据是远远不够的 那么于此同时移动的数据就显得尤为的重要
  • 【WSL】WSL/WSL2安装

    WSL安装 参考 microsoft官网教程 WSL安装 系统要求 WSL WSL2的安装 Linux发行版WSL版本选择 安装linux发行版 WSL移动到其他磁盘 系统要求 必须运行 Windows 10 版本 2004 及更高版本 内
  • 软件测试——基础理论知识你都不一定看得懂

    目录 前言 软件测试 Software Testing 的定义 软件测试的分类 软件测试的常用种类 测试用例八大设计方法 结语 前言 入软件测试这一行至今已经10年多 承蒙领导们的照顾与重用 同事的支持与信任 我的职业发展算是相对较好 从入
  • Pyppeteer的使用——爬取京东

    1 Pyppeteer优势 不用像Selenium一样配置浏览器环境 可以直接在页面上进行爬取 爬取的不是页面源码而是已经加载完毕的 显示在浏览器上的页面 可以绕过加密系统 Pyppeteer加载的text 是加载完成后的HTML页面 所有
  • ad如何计算电路板的pin数量_一招教你学会使用AD更改PCB板子尺寸!

    原标题 一招教你学会使用AD更改PCB板子尺寸 使用原理图生成PCB后 Altium Designer会自动生成一块黑色区域 还有一个在禁止布线层的方框 还有两段标注板子大小的线 下面说一下如何更改黑色区域的大小 还有如何精确确定板子尺寸
  • DES密码算法实现(C语言)

    算法介绍 DES算法为密码体制中的对称密码体制 又被称为美国数据加密标准 是1972年美国IBM公司研制的对称密码体制加密算法 明文按64位进行分组 密钥长64位 密钥事实上是56位参与DES运算 第8 16 24 32 40 48 56
  • 【腾讯云TDSQL-C Serverless 产品测评】一文带你了解TDSQL-C Serverless版

    文章目录 前言 腾讯云TDSQL C for MySQL Serverless版介绍 准备工作 1 购买TDSQL C for MySQL Serverless版实例 2 开启数据库外网访问 3 安装测试工具 4 准备测试数据 Server
  • 记录android遇到的SecurityException

    记录android遇到的SecurityException 一 java lang SecurityException getUniqueDeviceId The user 10283 does not meet the requireme
  • List和ArrayList

    List和ArrayList区别 List是一个接口 而ArrayList是List接口的一个实现类 ArrayList类继承并实现了List接口 因此 List接口不能创建实例对象 但是可以为List接口创建一个指向自己的对象引用 而Ar