栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据结构---简单认识Array List

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构---简单认识Array List

目录

一:简单认识List

1.1:什么是List

1.2:List的常用方法

1.3:List的使用

二:ArrayList简介

三:ArrayList的使用

3.1:ArrayList的构造

3.2:ArrayList的常见操作

3.3:ArrayList的遍历 

3.4: ArrayList的扩容机制


在我们认识ArrayList之前,我们先简单了解一下List吧。

一:简单认识List

1.1:什么是List

在集合框架中,List是一个接口,继承自Collection。

 

 Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,如下所示:

 Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:

站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。

1.2:List的常用方法
方法解释
boolean add(E e)尾插 e
void add(int index, E element)将 e 插入到 index 位置
boolean addAll(Collectionc)尾插 c 中的元素
E remove(int index)删除 index 位置元素
boolean remove(Object o)删除遇到的第一个 o
E get(int index)获取下标 index 位置元素
E set(int index, E element)将下标 index 位置元素设置为 element
void clear()清空
boolean contains(Object o)判断 o 是否在线性表中
int indexOf(Object o)返回第一个 o 所在下标
int lastIndexOf(Object o)返回最后一个 o 的下标
List subList(int fromIndex, int toIndex)截取部分list

1.3:List的使用

注意:List是个接口,并不能直接用来实例化。

如果要使用,必须去实例化List的实现类。在集合框架中,ArrayList和linkedList都实现了List接口。 

二:ArrayList简介

在集合框架中,ArrayList是一个普通的类,实现了List接口

 说明:

1. ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问。

2. ArrayList实现了Cloneable接口,表明ArrayList是可以clone的 。

3. ArrayList实现了Serializable接口,表明ArrayList是支持序列化的 。

4.Vector和ArrayList都是顺序表,底层空间存储时都是连续的。唯一的不同就是,ArrayList不是线程安全的,在单线程下可以使用。Vector是线程安全的(Vector里的方法有synchronized修饰)在多线程中可以选择Vector或者 CopyOnWriteArrayList(写时拷贝)。

  5. ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。

三:ArrayList的使用

3.1:ArrayList的构造
方法解释
ArrayList()无参构造
ArrayList(Collection c)利用其他 Collection 构建 ArrayList
ArrayList(int initialCapacity)指定顺序表初始容量

3.2:ArrayList的常见操作
方法解释
boolean add(E e)尾插 e
void add(int index, E element)将 e 插入到 index 位置
boolean addAll(Collection c)尾插 c 中的元素
E remove(int index)删除 index 位置元素
boolean remove(Object o)删除遇到的第一个 o
E get(int index)获取下标 index 位置元素
E set(int index, E element)将下标 index 位置元素设置为 element
void clear()清空
boolean contains(Object o)判断 o 是否在线性表中
int indexOf(Object o)返回第一个 o 所在下标
int lastIndexOf(Object o)返回最后一个 o 所在下标
List subList(int fromIndex, int toIndex)截取部分list

3.3:ArrayList的遍历 

ArrayList 可以使用三方方式遍历:for循环+下标、foreach、使用迭代器

3.4: ArrayList的扩容机制

以上代码好吗?不好的话不好在哪?

肯定是不好的,循环要循环100次,运行时间长不说,如果底层空间不大,可能循环一次还都得扩一次容。每一次扩容所经历的操作都是开辟更大的空间,将旧空间的元素拷贝过来,这个过程很耗时。

假设底层空间只能容纳十个元素。

如果要循环100次,可以提前给好底层空间,这样就不用再扩容了。

ArrayList是一个动态类型的顺序表,即:在插入元素的过程中会自动扩容。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/488849.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号