一、 知识背景
1) 顺序表存储结构的特点:
-
为相邻的元素赋予相邻的存储位置,这样数据之间的物理位置的关系就可以表示数据之间的逻辑关系。只要知道了所存的第一个元素的位置,任意一个元素都可以随机存取。
-
但是,这样的结构,在做插入和删除一些位置的元素的操作时,需要移动大量元素。
-
以增加数据为例展示数据处理过程:
-
如果增加在最后面很容易,若果增加在元素1的后面,需要把自元素2以后的数据都向后移动一位,耗费时间长。
如果要删除元素1,元素2及其以后所有的元素就都要向前移一位,耗费时间长。
2) 链式存储结构的特点:
-
用一组任意的存储单元存储数据元素,存储单元可以连续也可以不连续,因此为了表示每个元素与其后继元素的逻辑关系,存储一个元素的同时要存储一个指示它后继元素的信息。
-
这样的结构,做删除和插入操作时不需要大量移动元素,但是也失去了顺序存储结构随机存取的优点。
-
以增加数据为例展示数据处理过程:
二、内部实现
1) ArrayList
它的内部实现是基于数组的,而数组是顺序表,只要你提供逻辑位置立马就能找到数据所在的物理位置,因为它们是一一对应的。因此,对于对于随机访问数据的get和set方法,使用ArrayList比较好。
2) LinkedList
它的内部实现是链表,如果要存取某一数据,需要从链表的head位置开始查询,耗时比较长。因此,对于增加和删除的add和remove方法,使用LinkedList比较好。
二、 实际应用
根据项目的需求选择适合项目的集合类