排序ConcurrentDictionary有意义吗?

 Sunlight丶丶丶 发布于 2023-02-13 18:57

起初我的想法就像"这是一个基于散列的数据类型,然后它是未分类的".

然后,由于我即将使用它,我深入研究了这个问题,发现这个类实现了IEnumerable,并且这个帖子也证实了可以迭代这种数据.

所以,我的问题是:如果我使用foreach的是ConcurrentDictionary哪个是我读取元素的顺序?

然后,作为第二个问题,我想知道它的接口继承的排序方法是否具有任何用途.如果我ConcurrentDictionary在新订单上调用排序方法会持续存在(例如传入foreach)?

希望我已经清楚了

1 个回答
  • 当前的实现没有对元素的顺序做出任何承诺.未来的实现可以轻松更改枚举元素的顺序.

    因此,您的代码不应该依赖于该顺序.

    来自Dictionary<TKey, TValue> msdn文档:

    返回项的顺序未定义.

    (我找不到任何有关的参考ConcurrentDictionary,但同样的原则适用.)

    当您引用"其接口继承的排序方法"时,您的意思是LINQ扩展吗?喜欢OrderBy?如果是这样,这些扩展是纯粹的功能,并始终返回一个新的集合.那么,回答你的问题"新订单会持续存在吗?":不,它不会.但是你可以像这样使用它:

    foreach(KeyValuePair<T1, T2> kv in dictionary.OrderBy(...))
    {
    
    }
    

    2023-02-13 18:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有