gpt4 book ai didi

c# - 收藏修改项目

转载 作者:太空狗 更新时间:2023-10-29 23:47:29 25 4
gpt4 key购买 nike

我阅读了大量有关为特定实现选择正确集合的文章,我知道最终会归结为对真实数据进行基准测试,但在我忙于这样做的时候:

  • c# 中什么排序集合允许修改项包含?我好像找不到?

  • 这是因为修改可能会作为删除来实现吗然后重新插入,从而产生一个明确的“修改”功能毫无意义?

我需要一个集合(自定义或标准库),对其执行以下操作。

  • 插入 - 经常
  • 删除 - 经常
  • 修改 - 经常修改
  • 选择前 X 个元素 - 每次同时发生上述任一情况时,甚至更多。

目前我正在使用 SortedSet,因为它提供 O(logn) 插入,但我不清楚移除性能以及如何最好地修改项目。

最佳答案

首先,我们需要明确修改集合的含义。

一般来说,操作集合是指从列表中插入/删除项目。要修改单个项目,它基本上是访问该项目并修改其属性。访问项目的成本取决于集合实现,但项目属性的修改不依赖于集合。另请注意,如果集合项不可变,则无法修改它。

如果您只是想找到最好的内置集合,您基本上是在 SortedList 和 SortedSet 之间进行选择(SortedDictionary 与 SortedSet 相同)。

SortedList 在内部将数据存储为数组,因此它可以通过索引进行高效访问(用于获取前 X 项); SortedSet 具有更快的插入和删除(通过常数因子),但是索引访问将需要在树中搜索下一个项目,最坏情况下是 O(log n),最好情况下是 O(1)。

除此之外,两者之间的差异很小,因为它们都实现了红黑树,只是实现细节不同。

必须针对您的用户案例衡量实际性能。但你已经知道了。

关于c# - 收藏修改项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10261326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com