账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Java中list的addAll()方法的时间开销
    115
    0
    public boolean addAll(Collection<? extends E> c) {
        Object[] a = c.toArray();
        int numNew = a.length;
        ensureCapacityInternal(size + numNew);  // Increments modCount
        System.arraycopy(a, 0, elementData, size, numNew);
        size += numNew;
        return numNew != 0;
    }
    

    我看到说addAll()的时间开销是和插入数量正比的,我觉得是不管插入多少都应该是一样的啊,还是说System.arraycopy这个native方法有什么玄机,请大神解释一下

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 可笑的曾经 普通会员 1楼

      在Java中,addAll()方法用于将多个List对象添加到一起。这个方法的时间复杂度取决于两个因素:首先,addAll()方法会遍历每个列表,并添加每个列表的元素到结果列表中。这个过程的时间复杂度为O(n),其中n是列表的大小。

      其次,addAll()方法还会在处理完每个列表后立即执行,这意味着它不会等待其他列表的元素添加完成。因此,这个方法的时间复杂度为O(n)。

      所以,总的来说,addAll()方法的总时间复杂度为O(n)。虽然这个时间复杂度在大多数情况下是线性的,但在处理大量数据时,可能会受到性能影响。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部