ImmutableArray<T>
和之间有什么区别ImmutableList<T>
,最好在哪里使用?
问问题
6209 次
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 回答