java中ArrayList与LinkedList的原理及区别,
分享于 点击 47717 次 点评:228
java中ArrayList与LinkedList的原理及区别,
ArrayList
ArrayList实现原理就是动态数组,为什么叫动态数组呢,就是当ArrayList容量扩大时,底层的数组的容量会自动扩大50%,并且ArrayList是线程不安全的。
其优点是查询消耗的时间短,属于随机查询。而相对于LinkedList而言它的添加、删除操作要更耗时。
对于ArrayList在存储大量数据时会大量浪费很多空间,原因就是数组的起始容量为10,当数组要增长时增长公式(newcapacity=(oldcapacity*3)/2+1),相当于增加的50%,这样就会浪费大量空间,如果在你知道你要存储数据的容量前提下,最好声明容量大小。也可以使用trimToSize去掉多余的空间。
LinkedList
LinkedList的实现原理基于链表。其优点就是方便添加和删除元素,而arraylist的优点恰恰的LinkedList的缺点,其查询方法消耗的时间要大于arraylist。
总体上来看,如果你需要做大量的查询工作建议你使用ArrayList,如果需要做大量的添加、删除工作建议使用LinkedList.
相关文章
- 暂无相关文章
用户点评