集合_数据结构数组和链表

数组数据结构

特点:

查询和修改快

增加和删除慢

ArrayList和Vector的底层是使用数组的数据结构

在ArrayList中初始化的长度是10,如果长度不够用了,每次会增加之前长度的50%,然后将旧的集合中的

数据拷贝到新的集合中。Vector每次扩容的长度是之前的一-倍

数组结构图:


为什么查询和修改快?

查询和修改时直接通过数组的下标就能快速定位到相应的位置。

为什么增加和删除慢?

数组里面内存地址是连续的,如果要做增加或者删除时势必要修改长度,这样可能会导致牵-发而动全身的操作,比如在下标是2位置上的元素进行删除,那么后面每个位置上面的元素都会向前移动。

链表数据结构

特点:

增加和删除快

查询和修改慢

LinkedL ist的底层使用的是链表数据结构,可以将链表看做是一条断开的车链子 ,两两相扣。

链表结构图


为什么增加和删除快?

链表里面的内存地址不是连续的,每个元素里面都保留着_上一个元素和下一个元素的内存地址(首尾除外), 如果要增加或删除元素时,只有与他相邻的两个位置上的元素发生变化,其他元素不用任何改变。

为什么查询和修改慢?

链表里面的内存地址不是连续的,要查找的话,需要从头或者尾部挨个查找,不能直接定位。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容