ArrayList

上一篇博客讲了顺序表及其底层的实现, 那么这节课我们就来讲一下ArrayList的具体构造和使用.

目录

一. ArrayList的构造

二. ArrayList的常见方法

三. ArrayList的遍历

四. ArrayList的优缺点


关于ArrayList的几点注意:

  • ArrayList是一个普通的类,包含在java.util包中. 若要使用ArrayList,须导入java.util.ArrayList .
  • ArrayList是以泛型方式实现的, 使用时必须先实例化.
  • ArrayList实现了RandomAccess接口, 表明ArrayList支持随机访问.
  • ArrayList实现了Cloneable接口, 表明ArrayList是可以clone的.
  • ArrayList实现了Serializable接口, 表明ArrayList是支持序列化的
  • ArrayList底层是一段连续的空间,并且可以动态扩容.(是一个动态类型的顺序表).

一. ArrayList的构造

ArrayList有三种构造方法:

ArrayList ( )

ArrayList (Collection <? extends E> c)

ArrayList (int initialCapacity)

(1) 无参的构造方法:

 elementData是一个数组引用, DEFAULTCAPACITY_EMPTY_ELEMENTDATA是一个空数组. 所以, 如果调用了没有参数的构造方法,表明为ArrayList初始化了一个空数组.

(2) 带一个整型参数的构造方法:

此时的initialCapacity表示给数组初始化的大小.如果initialCapacity > 0 , 初始化一个长度为initialCapacity的数组. 如果initialCapacity == 0 , 初始化一个长度为0的数组. 如果initialCapacity < 0 , 抛出异常(Illegal Capacity).

(3) 带一个Collection参数的构造方法

该构造方法的作用是利用其他Collection来构建ArrayList. 

只要实现了Collection接口的类, 且类的参数类型继承于E或和E相同 (E在实例化时由ArrayList指定)的类型参数, 都可以传进来.

例如:

ArrayList是实现了Collection接口的, arrayList的参数类型Integer和arrayList3是相同的.  所以可以直接传递一个arrayList.

二. ArrayList的常见方法

虽然ArrayList提供的方法比较多, 但是常用的方法如上图所示, 当需要用到其他方法时, 我们可以自行查看ArrayList的帮助文档.

三. ArrayList的遍历

ArrayList的遍历有三种方法

(1) for循环遍历.

(2) foreach循环遍历.

(3) 使用迭代器Iterator.

四. ArrayList的优缺点

(1) 缺点: ArrayList底层使用连续的空间, 不方便插入和删除元素(因为要移动数组元素).

(2) 缺点: ArrayList扩容可能会浪费内存空间.

(3) 优点: ArrayList更适合根据下标查找或更新的场景.

如何解决顺序表不方便插入和删除元素的问题呢? -- 链表.

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值