是否可以使用 IComparer 在填充列表时对其进行哈希处理

本文关键字:处理 哈希 列表 可以使 IComparer 填充 是否 | 更新日期: 2023-09-27 18:37:21

我是尝试使用IEnumerable接口的新手。 我一直只是编写自定义哈希排序,而不是尝试使用本机语法,因为我对实现有些困惑。 我正在尝试确定是否可以使用 BinarySearch 或一些类似的函数以排序格式组装列表。 是否有一个函数将返回最接近的可能索引以将新项目插入列表,以便每次插入项目时列表始终通过哈希树保持排序?

当我使用 BinarySearch 时,如果没有匹配项,它似乎总是返回 -1。 我宁愿它返回最接近的可能索引。 有没有办法使用本机 IEnumerable 接口来做到这一点? 我宁愿每次我想引用列表时都不要调用"Sort(IComparer)"。

简而言之:在将新项目添加到列表时,是否可以使用二进制搜索或一些等效函数来查找"插入(项目,索引)"到列表中的最佳索引?

是否可以使用 IComparer 在填充列表时对其进行哈希处理

考虑使用 SortedSet<T> ,它具有用于保持列表排序的内置支持。 这样做的好处是保证内容始终按排序顺序排列,而不是在修改列表时依赖代码来正确遵循排序顺序。

如果有人遇到这种情况 - 第一个解决方案是在提出问题之前始终仔细阅读文档。

如果未找到匹配项,则 BinarySearch(IComparer) 返回下一个最佳位置的按位赞美,因此它在填充列表时满足了"二叉树排序"列表的需求。 当我看到它返回"-1"时,我错误地得出结论,这意味着"未找到",因为我经常使用"-1"表示"未找到",而整数应该是正数。