Arrays.asList的性能表现

31

使用Arrays.asList转换静态对象数组的成本是多少?假设对象数组有N个项,它仅仅是一个O(N)算法,其中所有项都是通过引用复制的,还是仅仅是一个外观,其中原始数组被放在List的外观后面?

1个回答

48
它很便宜,时间复杂度为O(1)。正如你所猜测的那样,列表仅是数组的包装器。这在Java API文档中得到了确认:

返回由指定数组支持的固定大小的列表。(返回的列表对数组的更改“写入”到数组中。)


当以相反的方向进行操作(Collection.toArray),数组不是“写入通过”的。对数组所做的更改不会影响该数组来自的列表。 - Sam Barnum
换句话说,它克隆了原始数组。 - monksy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接