43

ImmutableArray<T>和之间有什么区别ImmutableList<T>,最好在哪里使用?

4

4 回答 4

31

以下是一些可能有助于解释的阅读材料:请欢迎 ImmutableArray

这是一段摘录:

使用不可变数组的原因:

  • 很少更新数据或元素数量很少(<16)
  • 您需要能够迭代性能关键部分中的数据
  • 您有许多不可变集合的实例,并且无法将数据保存在树中

坚持使用不可变列表的原因:

  • 更新数据很常见或预计元素数量不会很少
  • 更新集合比迭代内容更重要
于 2014-03-12T11:21:00.690 回答
27

我想你是在问在哪里使用它们。请欢迎 ImmutableArray将提供帮助。总而言之,在以下情况下使用不可变数组:

  • 很少更新数据或元素数量很少(<16)
  • 您需要能够迭代性能关键部分中的数据
  • 您有许多不可变集合的实例,并且无法将数据保存在树中

在以下情况下使用不可变列表:

  • 更新数据很常见或预计元素数量不会很少
  • 更新集合比迭代内容更重要
于 2014-03-12T11:21:11.217 回答
7

主要区别在于 anImmutableArray只是一个普通数组的包装器,这意味着检索数组中的元素非常快。

AnImmutableArray也是一个结构,这意味着它是一种值类型,因此它比作为引用类型的不可变列表占用更少的空间。

由于这些原因,ImmutableArray如果您很少需要更新其数据,或者元素数量很少(小于 16),或者迭代集合的性能很重要,则适合使用 an。

如果您的需求与上述原因不符,则应使用ImmutableList.

在此处查找文档

于 2014-03-12T11:35:24.007 回答
3

通过博客文章“请欢迎 ImmutableArray<T> ”(其他人都在引用相同的博客文章),区别是......

ImmutableArray

  • 简单的实现(只是一个数组)。
  • 未针对快速更新大型集合进行优化(需要复制整个数组)。
  • 对于大多数用例(涉及更新大型集合的任何事情)更有效。

ImmutableList

  • 更复杂的实现(涉及树的东西)。
  • 针对快速更新大型集合进行了优化(可以在对数时间内完成)。
  • 对于大多数用例来说效率较低。

因此,如果您的更新不多,或者您的收藏很小,请使用ImmutableArray. 如果您要经常更新大型集合,则需要使用ImmutableList.

于 2017-07-20T02:36:10.670 回答