java数据结构一-数组array

52次阅读

共计 476 个字符,预计需要花费 2 分钟才能阅读完成。

数组最好写得支持泛型
public class Array<T> {

       #T 是自己自定义的一个类型
          }

java 不支持直接 new 一个泛型,必须先 new 一个 Object,然后前面进行 类型转换
data = (E[]) new Object[capacity]

动态数组:扩容部分
if size == length :
resize(2*data.length);

private void resize(int newcapacity) {

E[] newData = (E[]) new Object[newcapacity];
for(int i=0;i<size;i++) {newdata[i] = data[i];
    }
data  = newdata

复杂度震荡问题 :本来 removelast, 和 addlast 操作,均摊的时间复杂度是 O(n), 但是如果操作到了需要扩容或缩容的元素,频繁的进行,removelast, 然后又 addlast,这样一直是 O(n)
出现这样问题的原因呢:我们添加和删除时候的扩容太激进了,(too eager), 应该元素个数变成总容量 1 / 4 的时候,我们只缩容到容量的一半,而不是过于激进,直接缩容到 1 /4

正文完
 0