数组和链表的优缺点,: 数组的内存空间是连续的,链表的内存结构是不连续的内存空间
数组:
优点:数组支持随机访问,根据下标随机访问的时间复杂度为O(1),
缺点:
1)插入、删除的时间复杂度是O(n)
2)若申请内存空间很大,比如100M,但若内存空间没有100M的连续空间时,则会申请失败,尽管内存可用空间超过100M。
3)大小固定,若存储空间不足,需进行扩容,一旦扩容就要进行数据复制,而这时非常费时的。
链表:
优点:链表适合插入、 删除,时间复杂度O(1)
缺点:
1)随机访问的时间复杂端是O(n)
2)内存空间消耗更大,因为需要额外的空间存储指针信息。
3)对链表进行频繁的插入和删除操作,会导致频繁的内存申请和释放,容易造成内存碎片,如果是Java语言,还可能会造成频繁的GC(自动垃圾回收器)操作。
ArrayList的优势:
将很多数组操作的细节封装起来。 比如前面提到的数组插入、 删除数据时需要搬移其他数据等。
支持动态扩容。
arraylist里可以同时存放不同类型的对象(自己加的)
ArrayList的劣势:
1.Java ArrayList无法存储基本类型,