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