细心的朋友会发现,JDK中提供的List接口对应的是数据结构中的线性表,List接口下的ArrayList对应的是顺序线性表,顾名思义,其底层使用数组实现顺序线性表;List接口下的LinkedList则是链表的实现。 数组
这两种数据结构的各有所长,根据程序的实际用途,选择适当的数据结构,无异是根本上的优化。 数据结构
顺序存储结构 : 优化
优势: ①随机存取时间复杂度为O(1) ②无需为表中元素之间的逻辑关系额外增长存储空间 接口
缺点: ①插入、删除操做须要移动大量的元素,时间复杂度为O(n) 效率
②表的长度难以肯定 List
链式存储结构: 遍历
优势: 插入、删除节点时不移动数据, 效率高,时间复杂度为O(1) 程序
缺点: 存取时要遍历,效率低,时间复杂度为O(n) 链表
所以,综上所诉,顺序存储结构适合频繁存取、查找,不多插入、删除的状况;链式存储适合频繁插入、删除,不多存取的状况; 数据