操作数组的几个技巧
插入
如果仅将数组当作数据集合使用,无需考虑元素的顺序,那么将元素插入到第 k 个位置的操作可简化为:将第 k 个位置的元素插入到数组尾,将新元素放到第 k 个位置上。快速排序便利用了该思想。
删除
需要删除多个元素时,仅作标记,待所有位置标记完毕后再触发数据搬移。这也是 JVM 中 Garbage Collection 的思想。
数组和容器的选择
以 Java 为例,ArrayList 无法存储基本数据类型,只能存储其包装类,如果仅操作基本数据类型,且尤其关注性能,仍应选用数组。其次,如数据大小已知,操作又比较简单,也可直接使用数组。再次,多维数组,Object[][]
比 ArrayList<ArrayList>
的形式更加直观。最后,使用 ArrayList 时,若数据大小已知,应指定其大小,避免动态扩容带来的时空消耗。