为什么(List<Object>) list.size()的运行时间复杂度是O(1)?

Rit*_*rty -1 java time-complexity

这里我了解到一些静态 arr 的复杂度是 O(1)

但是对于动态数组,大小永远不会设置,那么复杂度如何保持不变呢?甚至 Oracle文档也是这么说的。

static int count =  0;
public static void main(String[] args) {
    List.of(1, 2, 3, 4, 5).forEach(x -> count++); // Java-10
    System.out.println(count);
}
Run Code Online (Sandbox Code Playgroud)

这段代码应该确定列表的大小,如果运行 O(n) 次那么为什么

List.of(1, 2, 3, 4, 5).size();
Run Code Online (Sandbox Code Playgroud)

是 O(1)

kay*_*vez 5

在形成列表时,时间复杂度不是O(1)。列表形成后,大小将保存在列表内部。之后,当我们调用List.size()它时,只需返回保存的大小,时间复杂度为 O(1)