【问题标题】:What's the algorithm behind add() method in Java for ArrayList?Java中ArrayList的add()方法背后的算法是什么?
【发布时间】:2016-04-15 18:16:59
【问题描述】:

所以我有点创意,想用 Java 重新创建一些方法,但我被 add() 卡住了。

我的想法是先检查我们是否需要更大的尺寸,然后再添加(如果需要)。

之后复制初始数组,然后移动数组中的索引和数字,但坦率地说,我不知道该怎么做,所以这就是我在这里问的原因。

【问题讨论】:

  • 为什么会有移位?
  • 如果你使用javap,你可以对字节码进行逆向工程:javap -v java.util.ArrayList。这可能会帮助您了解它在幕后所做的事情。
  • 或者你可以看看source code
  • @harold 这不合逻辑吗?如果我只是将一些元素添加到某个索引而不移动其余元素,我只会覆盖当前元素,或者至少我是这么认为的。
  • @brajevicm 好吧.. 也许?你可以只改变索引,而不是改变内容

标签: java algorithm arraylist add


【解决方案1】:

逻辑就是这样:

public boolean add(E e) {
    ensureCapacity(size + 1);  // Increments modCount!!
    elementData[size++] = e;
    return true;
}

可以看坑java源码here

【讨论】:

  • 非常感谢,这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2020-09-22
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
相关资源
最近更新 更多