ArrayList与LinkedList
ArrayList与Linkedlist的增删改查问题以及集合选择问题
线程:安全:Vector
不安全:ArrayList,LinkedList
增删多:LinkedList
查询多:ArrayList
1. ArrayList为什么查询快:
底层是数组,在内存中开辟空间,是连续的,查询时可以直接定位到查询的位置(根据偏移量查询)
LinkedList为什么查询慢:
因为LinkedList是底层是链表,查询时单链表是[元素|下一个元素地址这种结构]只能从第一个依次开始查,在Java中LinkedList是双连边结构[上一个元素地址|元素|下一个元素地址]这种结构查询时,判断指针是距离首端近还是尾端近,离首近则从第一个开始查询,否则从末尾开始。(速度有所提高),越是查询的是中间元素速度越慢。
2.ArrayList为什么增删慢:
增删时因为是数组结构当删除一个元素是其他元素都要移动,就是慢的原因,当然在末尾增加就没有这个问题也会快一些。
LinkedListt为什么增删快:
增删时时链表结构,在内存中结构元素存储不连续增删时最多影响两个元素。就是快的原因。
加油: