1)在Dart中,List.unmodifiable(someList)
和Map.unmodifiable(someMap)
会创建一个不可修改的视图,还是一个全新的独立列表/地图?我猜它是一个新的独立名单,但我必须确定。
如果它是一个视图,对原始列表的修改将修改现在不那么不可修改的列表,但有时您只是丢弃原始列表,并且创建视图要快得多。
2)并且,如果他们创建独立的列表/地图,是否有某种方法可以创建不可修改的视图,以达到性能目的?
3)从另一个创建dart列表的大O是什么,包括由List.unmodifiable(someList)
创建的dart列表?例如,这是Java集合的信息:https://gist.github.com/FedericoPonzi/8d5094dbae33cbb94536a73f62d1c1a0
更新 好的,我已经通过查找:https://api.dartlang.org/stable/1.23.0/dart-collection/UnmodifiableListView-class.html
回答了我自己的问题2但我仍然需要知道问题1和3的答案。
答案 0 :(得分:3)
对于#1,复制项目。这是一个全新的独立名单。
对于#2,请参阅https://api.dartlang.org/dev/2.0.0-dev.55.0/dart-collection/dart-collection-library.html
UnmodifiableListView
和UnmodifiableMapView
。
对于#3,Big(O)是N - 它复制所有元素,因此它必须访问每个元素。
如果你从另一个列表中使用List.unmodifiable
,它就知道目标长度,所以它不必调整它正在迭代时创建的列表的大小。