天上飞的云传奇 2021-08-10 08:49 采纳率: 83.3%
浏览 118
已结题

Java中ArrayList的相关问题?GC回收问题?


public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // Increments modCount!!  add操作涉及到容器的扩容
    elementData[size++] = e;//正常操作,多线程时不安全
    return true;
}

public E remove(int index) {
    rangeCheck(index);

    modCount++;//使用迭代器遍历元素时,删除元素会让迭代器失效
    E oldValue = elementData(index);

    int numMoved = size - index - 1;//找到要移动到前面的长度
    if (numMoved > 0)
        System.arraycopy(elementData, index+1, elementData, index,
                         numMoved);//把数组index之后的元素向前移1。
    elementData[--size] = null; // clear to let GC do its work

    return oldValue;
}

elementData[--size] = null; // clear to let GC do its work
那么和我直接add(null) elementData[size++] = e;这句话有什么区别?

  • 写回答

2条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 8月18日
      • 已采纳回答 8月10日
      • 创建了问题 8月10日

      悬赏问题

      • ¥15 ubuntu18.04 tty报错&tty界面su/sudo命令无法执行,如何解决?
      • ¥20 关于c语言网络编程,实现传文件和即时聊天
      • ¥20 下面的压缩方法是否可行
      • ¥15 结构体数组读取文件信息失败,读取不了
      • ¥15 kaldi thchs30 训练遇到问题
      • ¥15 shellter无法使用,如何解决?(操作系统-kali)
      • ¥15 matlab动态模态分解程序
      • ¥60 关于渗透及远控的几个问题
      • ¥15 python文本词汇出现次数统计
      • ¥15 使用按键和串口,记录按键在不消抖的情况下触发的次数