1.数组
1.1数组的定义
数组是始终以线性表数据结构,用一组连续的内存空间,来储存相同的数据。
1.2数组的特点
高效的随机访问,低效的插入删除
1.3数组的应用
JAVA中的数组容器:ArrayList
List list = new ArrayList();//定义数组
list.add("添加元素");//添加
list.get(0);//获取第一个元素,数组的下标以0开始
初始化空,默认容量10,扩容机制:创建一个1.5倍容量数组,原数组复制。
2.链表
2.1链表的定义
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
链表和数组最大的不同就是,数组是连续内存地址,链表可以在任意内存位置。数组需要1.5倍容量的空间,而链表不用。
2.2单链表
特点:相比数组,删除插入更快(不需要数据搬移),但查询没有数组快(非连续)
2.3循环链表
2.4双向链表
linkedhashmap
2.5双向循环链表
2.6.链表和数组的性能比较
2.7链表的应用
JAVA中基于链表的容器:
List<String> list = new LinkedList<String>();
list.add("第一个元素");
list.get(0);