在平常的工作中,如果没有去深入的思考下数据存储的方式,我们会觉得数组似乎可以完成所有的工作需求。
对于这个问题首先要从数组的优缺点出发。
如果是一个无序数组,我们可以进行很快的插入(O(1))操作,但是查找比较慢(O(N));
对于一个有序数组,我们可以使用二分查找查找(O(logN))的很快,但是插入却是慢的(O(N));
而无论是有序还是无序的数组,我们在进行删除操作时都是慢的(O(N));
除此之外,数组被new之后,大小尺寸就被固定住了,但是我们在开发的时候,有时候是不知道会有多少数据会放到数组中的。
既然这样,如果有一种数据结构,其插入数据,查找数据,删除数据 都是很快的(比如说(O(1) 或者 O(logN)));岂不是美哉。
ps : java 中有一个类 为 Vector ,使用起来很像数组,但是它可以扩展,这些附加的功能是已效率为代价的。
fuck 实现原理和 我上次 的删除操作是一样的 查看点这里(里面的删除方法)