arraylist和linkedlist的区别

    arraylist的底层是数组,linkedlist的底层是链表。数组的优势在于查找,所以在针对查找时arraylist的效率会比linkedlist的效率更高,链表的优势在于增减,当增加一个元素时,只需要把添加位置首尾的指针赋值给元素,这样元素就拼接好了,而数组无法进行增加元素(如果满了的话)如果想要增加元素只能从新开辟一块空间来将原来的数组赋值给这个新的数组,然后将新元素添加进数组。

    arraylist底层是数组,但是当像list中add元素时,并没有考虑数组越界的问题,这是因为,当arraylist的底层数组在检测到数组中的元素个数到达整个数组差昂度的0.75这个值的时候就会自动重新开辟一个数组,这个数组的长度是原来数组长度的两倍,如果由达到了0.75,那么就会又将数组长度扩充一倍,原来的数组便会变成辣鸡等待gc来处理。但是,如果每次都让数组自己扩充容量,会极大的浪费资源,所以arraylist的构造方法中是可以传递一个数组长度的,如果知道大概需要多大的容量那么就可以一次性申请一个固定长度的数组,这样就会省去很多的资源,也提高了性能。例如arraylist(128)就是让底层数组的初始长度为128,只有达到数组元素达到96时才会自动扩充一个256长度的数组。

原文地址:https://www.cnblogs.com/sandwichforworld/p/5645407.html