ArrayList:底层是基于动态数组,是顺序表。随机访问元素的效率比较高,因为访问的是数组下标,向数组尾部插入元素的效率也较高。但向指定位置插入元素和删除元素效率较低,因为插入或删除之后元素会向后移或向前移动。
而称之为动态数组是因为当ArrayList数组元素超过其容量时,ArrayList会自动扩容,扩容后的容量是原来的1.5倍(基于1.8之后的版本),
LinkList:是基于链表的动态数组操作。对于指定位置元素的增加和删除不需要对数据进行移动复制,只需要改变指针指向。访问数据的效率较低,因为要去遍历链表。
顺序表:地址连续的,不间断的
链表:地址节点随机分布,由指针指向该节点
总结:当get和set时用ArrayList效率较高。指定位置增加或删除LinkedList效率较高。