gpt4 book ai didi

java - 将一个数组列表复制到另一个数组列表的最快方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:44 24 4
gpt4 key购买 nike

在一次公司笔试中遇到一道java的ArrayList相关的题。我的查询只是实际问题的一小部分。

假设我们有以下函数将一个 ArrayList 复制到另一个:

void function(List<E> l)
{
List<E> m = new ArrayList<E>(l);
}

问题基本上是要求优化这个复制操作。该列表可能包含一百万个条目。我尝试了以下方法:

Collection .copy

系统.数组拷贝

全部添加

但是所有这些似乎都比给定的方法慢。我需要一种比给定方法更快的方法,还是可用的最佳方法?

最佳答案

首先,我认为存在基准错误。 public ArrayList(Collection<? extends E> c)使用 Arrays.copyOf内部使用 System.arraycopy (来源here)。因此 System.arraycopyaddAll不能比您提到的代码慢。

对于这个问题,没有更快的方法(假设您不希望丢失类型信息,这可能会节省时钟周期但非常微不足道)因为操作必须是 O(n) .和 System.arraycopy这是最快的方法,因为它使用 native 调用来快速复制它们。

关于java - 将一个数组列表复制到另一个数组列表的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com