Java集合源码分析我爱编程Java集合源码分析

Java集合源码分析之基础(一):数组与链表

2018-04-16  本文已影响738人  大大纸飞机

数组链表是数据结构中最基本的部分,也是其余众多数据结构的基础。即使在Java中,这两种结构使用的也很普遍。这里我们会先对它们进行简要分析。

数组

在java中,数组定义为一种基本类型,其可以通过下标获取到对应位置的数据。那么这种结构的数据,在内存中是怎么存放的呢?

数组的结构示意图

正如上图所示,数组在内存中是一段连续的存储单元,每个数据依次放在每个单元中。分析这种结构,我们可以得出以下几个结论:

总结起来就是:数组大小固定,查找迅速,增删复杂,需要完整的内存块,容易产生碎片。

链表

链表是一种离散存储结构,其在内存中存储不是连续的,每个数据元素都通过一个指针指向其下一个元素的地址。根据指针域的不同,链表又分为单链表、双向链表、循环链表等,这里我们只分析单链表。示意图如下所示:


链表的结构示意图

分析这种结构,我们可以得出以下几个结论:

总结起来就是:大小可以动态调整,增删迅速,查找较慢,数据元素所占内存略多,不需要整块内存块,不会造成碎片化。

数组与链表的选择

通过以上分析,数组链表对我们影响最大的几点区别在于:

在数据量很小,内容基本固定时,我们选择何种数据结构的影响并不大。但当数据量较大时,如果我们需要对数据进行频繁的插入删除,我们应该选择链表,如果我们需要频繁的获取某个位置的元素,我们应该选择数组。数组与链表并没有明确的优劣之分,根据不同的使用场景进行不同的选择,才是这两种结构使用的最佳方式。

上一篇 下一篇

猜你喜欢

热点阅读