Arraylist 和 Vector 和Linkedlist的区别 爱被打了一巴掌 2021-11-09 08:52 296阅读 0赞 1.首先我们从它们底层数据结构来分析 (1)Arraylist 和 Vector都是基于数组实现的,你可以从它的单词结构构成都可以看出,但是这个两个还是有一点点区别的 Arraylist的实现原理是采用一个动态对象数组实现的,默认构造方法创建一个空数组 ![1663689-20190703195940337-485492671.png][] ![1663689-20190703200205200-847451767.png][] Vector的实现原理也是采用一个动态对象数组实现的,只不过它的默认构造方法创建一个大小为10的对象数组 ![1663689-20190703200726866-1048040784.png][] ![1663689-20190703200955514-1538749283.png][] ![1663689-20190703201257550-908515070.png][] ![1663689-20190703201433001-776782554.png][] (2) Arraylist第一次添加元素时候,扩展容量为10,之后的扩充算法:原来数组大小+原来数组的一半(也就是1.5倍) ![1663689-20190703225016755-361884735.png][] ![1663689-20190703225409241-1902781159.png][] ![1663689-20190703230233869-45979764.png][] ![1663689-20190703230846513-1294761349.png][] ![1663689-20190703232505286-1276968953.png][] 应该可以很清楚的知道ArrayList底层扩容的原理了。而Vector和Arraylist的扩容机制类似,与Vector不同的是,Vector分两种情况如果增量为0的情况下每次扩容容量是翻倍,即为原来的2倍,而当增量>0的时候,扩充为原来的大小加增量,而ArrayList是1.5倍。看似1.5倍增长的很慢,那经常增加大量元素会不会导致经常扩容,数组重新分配导致效率低下呢?其实不然,每次增长为原来的1.5倍实际增长的量会越来越大的 (3)所以Arraylist和Vector不适合进行删除或插入操作 (4)为了防止数组动态扩充过多,建议创建ArrayList或者Vector时,给定初始容量。 (5)Arraylist多线程中使用不安全,适合在单线程访问时使用,效率较高,而Vector线程安全,适合在多线程访问时使用,效率较低 转载于:https://www.cnblogs.com/kyrieblog/p/11128882.html [1663689-20190703195940337-485492671.png]: /images/20211109/0b3e4647994943ebb5cf5667942e7574.png [1663689-20190703200205200-847451767.png]: /images/20211109/d65e8fa61996435ba9b3172c5a2f7940.png [1663689-20190703200726866-1048040784.png]: /images/20211109/32cdeec89b2c4360a17957a1eaa871eb.png [1663689-20190703200955514-1538749283.png]: /images/20211109/0d26d49bac1048c19f8f287d8acd6667.png [1663689-20190703201257550-908515070.png]: /images/20211109/76a6e0397b05422e88f27a41d679cb6e.png [1663689-20190703201433001-776782554.png]: /images/20211109/51fd434bda48414e8c7b032056c3c5c5.png [1663689-20190703225016755-361884735.png]: /images/20211109/34f2f0584a7744c99bd662cb28e9fca2.png [1663689-20190703225409241-1902781159.png]: /images/20211109/d65c88efa7774abe898edd6e8fbdab6c.png [1663689-20190703230233869-45979764.png]: /images/20211109/25e4661c7c6b4106be4f6208c2025dc3.png [1663689-20190703230846513-1294761349.png]: /images/20211109/a8b1aa017d644cf58333bd0f6ffeb8d7.png [1663689-20190703232505286-1276968953.png]: /images/20211109/87611205a6114f3d8c2d78b8a13153ff.png
还没有评论,来说两句吧...