1. 一个数组插入删除查找和链表的效率对比
考察点:
ArrayList和LinkedList两者之间插入删除查询的区别
1.ArrayList:数组形式的集合
插入/删除:在下标为 index 的地方,复制( for 循环得到一个数组) index 以后的数组,然后将数据插入/删除节点;
查询:根据下标查询。
2. LinkedList:链表形式的集合
插入/删除:将上一个节点的 next 指向新加入的节点,然后将新加入节点的 next 指向被截取的第一个节点,删除也是同理,不存在 for 循环操作;
查询:沿着链表轮训查找。
总结:相对于插入/删除来说,链表(
LinkedList)效率更高;查询的话,数组(ArrayList)效率最高。
2. 如果一个数组要反复插入删除,如何优化
类似于
Java标机回收算法,将删除的节点数据替换为null,等需要插入的时候在将null替换为对应的数据,最后删除对应的null。