数组如何实现随机访问?

数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。
因此使用公式就可以计算出某个位置的内存地址

如何避免增加和删除需要做大量的数据搬移工作

插入

  1. 如果数组有序 想要把某元素插入到第k位,那么就要搬移k位之后的元素 后移动一位
  2. 如果数组无序 想要把某元素插入到第k位,可以把第k位的元素放到末尾,然后把新元素放到k位

    删除

    标记删除

    容器能否完全替代数组?

  3. Java ArrayList 无法存储基本类型,比如 int、long,需要封装为 Integer、Long 类,而 Autoboxing、Unboxing 则有一定的性能消耗,所以如果特别关注性能,或者希望使用基本类型,就可以选用数组。

  4. 对于业务开发,直接使用容器就足够了,省时省力。毕竟损耗一丢丢性能,完全不会影响到系统整体的性能。但如果你是做一些非常底层的开发,比如开发网络框架,性能的优化需要做到极致,这个时候数组就会优于容器,成为首选。