Mar*_*rcG 2 performance dictionary list dart
1)在Dart中,执行List.unmodifiable(someList)并Map.unmodifiable(someMap)创建一个不可修改的视图,或者创建一个全新的独立列表/地图吗?我猜这是一个新的独立列表,但我必须确定。
如果是视图,则对原始列表的修改将修改现在不是那么不可修改的列表,但是有时您还是要丢弃原始列表,并且创建视图要快得多。
2)并且,如果它们创建了独立的列表/映射,是否有某种方法可以创建出于性能目的而无法修改的视图?
3)从另一个清单(包括由所创建的清单)创建飞镖列表的最大目的是List.unmodifiable(someList)什么?例如,这是Java集合的信息:https : //gist.github.com/FedericoPonzi/8d5094dbae33cbb94536a73f62d1c1a0
更新: 好的,我已经找到了这个,回答了我自己的第二个问题:https : //api.dartlang.org/stable/1.23.0/dart-collection/UnmodifiableListView-class.html
但是我仍然需要知道问题1和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从另一个列表中使用,它会知道目标长度,因此在迭代过程中不必调整其创建列表的大小。