第四周作业
Java集合类Vector,LinkedList,ArrayList的区别与联系:
最近刷题经常用到这三个集合类,所以就对其细节方面产生了兴趣,想一探究竟,于是写了这篇随笔以作记录。
答:1.从同步性来讲,在多线程中,Vector可以同步,ArrayList和LinkedList不能简单的进行synchronized同步,需要和其他内容进行封装才能同步。
2.从操作效率来讲,Vector和ArrayList都是基于Array的,无法脱离Array的限制,因此对其进行插入或者删除操作都会影响后面的元素,必如,共有n个元素,要在第i个位置插入或者删除一个元素,那么后面n-i个元素都要进行移动,效率比较低。而LinkedList不是基于Array的,它脱离了Array的限制,增加或者删除元素只对一个元素和该元素的前后两个节点产生影响,不会对其他元素产生影响,效率比较高。
3.从内存存储方式来讲,Vector和ArrayList是线性存储,即是连续的存储,而LinkedList不是线性存储,它的存储节点比较分散,一个几点包含该节点的存储数据和下一个节点有 关的信息,类似c/c++中的指针。
4.Vector较ArrayList来说,都是用数组实现的,但因为Vector可以同步,因此性能不如ArrayList。
5.Vector和ArrayList比较适合查询操作,LinkedList比较适合插入/删除操作。