ArrayList中add方法的复制操作
1.如图,先新建了一个list数组,长度为0
2.调用add方法后,通过arrays工具类中的copy方法把这个list数组的长度增加为10
结论:在创建数组时最好定义一个初始化数组容量。因为在第一次调用add方法时会进行一堆方法的执行,甚至还调用了System.ArrayCopy这个JNI来执行数组的复制,会消耗大量的cpu。
Arraylist和Linkedlist的区别
Arraylist的底层用数组实现,它的初始值为10增长因子为0.5。因为arraylist是由顺序表实现的,所以在进行增删改操作时要挪位置,删除的时候如果是最后一位不用挪位置,如果不是把其他的位置往前移。(查找的时间复杂度的为O(1),增删改的时间复杂度为O(n))
Linkedlist底层用链表来实现,链表根据指针逐一循环查找,所以查找效率低;当它删除时,只需要把链断开,再连接上,所以删除效率高。(查找的时间复杂度的为O(n),增删改的时间复杂度为O(1))