list - 在 Dart 中, `List.unmodifiable` 是创建一个不可修改的 View ,还是一个全新的独立列表?

标签 list performance dictionary dart collections

  • 在 Dart 中,执行 List.unmodifiable(someList)Map.unmodifiable(someMap)创建一个不可修改的 查看 ,还是一个全新的独立列表/ map ?我猜这是一个新的独立列表,但我必须确定。
  • 如果它是一个 View ,对原始列表的修改将修改现在不是那么不可修改的列表,但有时您无论如何都只是丢弃原始列表,并且创建 View 要快得多。

  • 并且,如果他们创建独立的列表/ map ,出于性能目的,是否有某种方法可以创建不可修改的 View ?
  • 更新 :好的,我已经回答了我自己的第 2 个问题,找到了这个: UnmodifiableListView<E> Docs .但我仍然需要知道其他问题的答案。

  • 从另一个创建 Dart 列表的大 O 是什么,包括由 List.unmodifiable(someList) 创建的 Dart 列表?例如,这是 Java 集合的信息:Big O for Java Collections .
  • 最佳答案

  • 项目被复制。这是一个全新的独立列表。
  • Dart Collection Library , 进一步来说:
  • UnmodifiableListView
  • UnmodifiableMapView

  • 它是 O(N) – 它复制所有元素,因此它必须访问每个元素。
  • 如果您使用 List.unmodifiable从另一个列表中,它知道目标长度,因此它不必在迭代时调整它正在创建的列表的大小。

  • 关于list - 在 Dart 中, `List.unmodifiable` 是创建一个不可修改的 View ,还是一个全新的独立列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50311900/

    相关文章:

    java - 基于其中元素数量的 java.util.List 的异常行为

    javascript - 在特定页面上使用 jQuery(放在页面底部)

    arrays - 将零移动到数组编程练习末尾的性能

    javascript - 重置多维数组的最快方法?

    java - 与标记语法相关的未知错误

    r - 从列表列表制作数据框,但每个元素都是一列

    python - 如何从 python 中的元素列表中删除特殊字符?

    c# - Contains on list太慢,如何改善?

    c++ - 我可以重用无效的迭代器吗?

    ios - 如何在一行中没有键的情况下检查字典数组中的值