我想知道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);
[]
[你好]
发生这种情况是因为
unmodifiableList
是modifiableList
的视图(而非副本)。