我想知道Collections.unmodifiableList的时间复杂度是多少?

如果我想使传入的Collection不可变,最便宜的方法是什么?

最佳答案

我想知道Collections.unmodifiableList的时间复杂度是多少?

Collections.unmodifiableList 返回其参数列表(而不是副本)的视图,因此它是O(1)。通常,这是创建不可变列表的方式,但是请确保不要更改原始可变列表,因为这些更改将反映在新创建的不可变列表中。如果您将原始列表设为私有,那么这应该不是问题。我正在谈论的是这种情况:

List<String> modifiableList = new ArrayList<>();
List<String> unmodifiableList = Collections.unmodifiableList(modifiableList);

System.out.println(unmodifiableList);
modifiableList.add("hello");
System.out.println(unmodifiableList);

[]
[你好]

发生这种情况是因为unmodifiableListmodifiableList的视图(而非副本)。

10-08 00:33