【学习Day1】List AbstractList ArrayList LinkedList的作用?ArrayList 构造有几种,有参数构造的意义?

目录

一、List AbstractList ArrayList LinkedList的作用?

1.类型不同

2.关系

3.接口和抽象类的区别

 4.分析

二、ArrayList 构造有几种,有参数构造的意义?

1.构造参数

2.无参构造直接创建一个空的对象数组​编辑

2.有参构造参数是一个int类型的时候。

 3.有参构造参数是一个集合类型的时候。

知识点

疑问:


一、List AbstractList ArrayList LinkedList的作用?

1.类型不同

  • List 是一个接口
  • AbstractList 是一个抽象类
  • ArrayList 普通类
  • LinkedList 普通类

2.关系

虚线是实现,实线是继承关系 

3.接口和抽象类的区别

图片来源

https://img.php.cn/upload/article/000/000/024/ae506a9600e807eef16f043273de08fe-0.png

 4.分析

  • 首先接口它是规定要有哪些功能,并不会做具体的实现,由此可知List接口的作用规定了它可以做哪些操作
  • 抽象类就好比一个通用的工具类,它里面有一些共通的方法,如果想用直接继承它就好了,由此可知AbstractList实现了List接口,针对于List接口做实现,抽象类实现接口的时候,无需实现接口中全部的方法,而这些未实现的方法由继承自此抽象类的子类来实现,有了抽象类这一层,可以减少子类不必要的实现,并且扩展了额外的功能。
  • ArrayList和LinkedList是对List接口的不同实现,由于接口和抽象类不能直接实例化,所以在使用的时候用它的子类

二、ArrayList 构造有几种,有参数构造的意义?

1.构造参数

通过查看源码得知ArrayList的构造一共有三个,一个无参构造两个有参构造。

2.无参构造直接创建一个空的对象数组

作用:无参构造的作用主要是用于创建一些无法确定集合大小的场景。

2.有参构造参数是一个int类型的时候。

根据源码可知当传入的值大于1,它会根据这个值创建一个固定长度的对象数组,当值等于0,等同于无参构造,创建一个空的对象数组,当小于0的时候会报IllegalArgumentException异常。

 传入小于0的时候报错

 作用:int类型参数的构造器主要用于已经确定集合大小的场景

 3.有参构造参数是一个集合类型的时候。

根据源码分析,前提传入的集合如果是空,会报NullPointerException异常,不为空传入后他会将其转换为对象数组,然后会把对象数组的长度付给size,如果这个size等于0创建一个空的对象数组,如果大于0在判断传入进来的集合类型是否是ArrayList如果是直接赋值,不是会把传入的集合复制一份在进行赋值。

 

作用:用于复制集合数据并不改变原有集合数据

知识点

  1. 接口抽象类区别
  2. List体系部分继承关系
  3. ArrayList和LinkedList的基础使用
  4. ArrayList底层数组结构 LinkedList底层链表结构
  5. ArrayList各个构造的作用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值