ArrayList与LinkedList的区别

一 对于处理一列数据项,Java提供了两个类ArrayList和LinkedList,ArrayList的内部实现是基于内部数组 Object[],所以从概念上讲, ArrayList
更象数组,但LinkedList的内部实现是基于一组连接的记录,所以, LinkedList
更象一个链表结构,所以,它们在性能上有很大的差别。从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要 随机地访
问其中的元素时,使用ArrayList会提供比较好的性能,而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照
顺序访问 其中的元素时,就应该使用LinkedList了。 如果在编程中,1,2两种情形交替出现,这时,你可以考虑使用List这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。LinkedList的用法介绍:Linkedlist的addFirst(object)方法,是把对象加入到链表的第一个位置,如果有连续的对象加入则最后加入的对象的序号为1。如果用addLast()方法则第一个加入的对象的序号为1。如果要用GetFirst或GetLast方法取得已存入的连续对象,则需要用相应的addLast和addFirst方法保证链表的结构。add方法相当于addLast方法。配置集合类的初始大小 在Java集合框架中的大部分类的大小是可以随着元素个数的增加而相应的增加的,我们似乎不用关心它的初始大小,但如果我们考虑类的性能问题时,就一定要考虑尽可能地设置好集合对象的初始大小,这将大大提高代码的性能。 比如,Hashtable缺省的初始大小为101,载入因子为0.75,即如果其中的元素个数超过75个,它就必须增加大小并重新组织元素,所以,如果你知道在创建一个新的Hashtable对象时就知道元素的确切数目如为110,那么,就应将其初始大小设为110/0.75=148,这样,就可以避免重新组织内存并增加大小。 考虑ArrayList与LinkedList的存储结构有上有什么不同。ArrayList不能直接获取容器中的对象。ArrayList的get方法为什么返回的是Iterator接口。
二: ArrayList 和LinkedList 都继承了List 接口,具有相同的行为,但是它们对某些操作的性能缺有着天壤之别。ArrayList是以顺序表的方式来存存储数据的,而LinkedList是链表的实现。下面来看一下俩种数据结构的区别: 顺序表 分配方式:静态分配。程序执行之前必须明确规定存储规模。若线性表长度n变化较大,则存储规模难于预先确定估计过大将造成空间浪费,估计太小又将使空间溢出机会增多。
存储密度:<1 存取方法:顺序存取结构,链表中的结点, 需从头指针起顺着链扫描才能取得。
插入删除操作:在链表中的任何位置上进行插入和删除,都 只需要修改指针。对于频繁进行插入和删除的线性表,宜采用链表做存储结构。若表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜 由上面的比较可以得出结论: 进行查找,很少做插入和删除操作时或只用来存储数据时,采用ArrayList为宜, 对于频繁进行插入和删除的线性表,宜采用LinkedList。

发布了13 篇原创文章 · 获赞 1 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章