IComparer 可以用于在填充列表时对列表进行哈希处理吗?
Can IComparer be used to hash a list as it is populated?
我不熟悉尝试使用 IEnumerable 接口。我总是只编写自定义哈希排序而不是尝试使用本机语法,因为我对实现有些困惑。我正在尝试确定是否可以使用 BinarySearch 或某些类似函数 assemble 排序格式的列表。是否有函数可以 return 将新项目插入列表的最近可能索引,以便每次插入项目时列表始终通过哈希树排序?
当我使用 BinarySearch 时,如果没有匹配项,它似乎总是 return -1。我宁愿它 return 最接近的索引。有没有办法使用本机 IEnumerable 接口执行此操作?我不想每次想引用列表时都调用 "Sort(IComparer)"。
简而言之:将新项目添加到列表时是否可以使用 BinarySearch 或某些等效函数来找到 "Insert(Item, index)" 到列表中的最佳索引?
考虑使用 SortedSet<T>
,它具有对保持列表排序的内置支持。这样做的好处是保证内容始终按排序顺序排列,而不是依赖您的代码在列表被修改时正确遵守排序顺序。
万一有人遇到这个问题 - 第一个解决方案是在提问之前总是仔细阅读文档。
BinarySearch(IComparer) return如果未找到匹配项,则下一个最佳位置的按位补充,因此它在填充列表时满足 "binary tree sort" 列表的需求。当我看到 return "-1" 时,我错误地得出了 "not found" 的结论,因为我经常将 "-1" 用于 "not found" 而整数本应为正数。
我不熟悉尝试使用 IEnumerable 接口。我总是只编写自定义哈希排序而不是尝试使用本机语法,因为我对实现有些困惑。我正在尝试确定是否可以使用 BinarySearch 或某些类似函数 assemble 排序格式的列表。是否有函数可以 return 将新项目插入列表的最近可能索引,以便每次插入项目时列表始终通过哈希树排序?
当我使用 BinarySearch 时,如果没有匹配项,它似乎总是 return -1。我宁愿它 return 最接近的索引。有没有办法使用本机 IEnumerable 接口执行此操作?我不想每次想引用列表时都调用 "Sort(IComparer)"。
简而言之:将新项目添加到列表时是否可以使用 BinarySearch 或某些等效函数来找到 "Insert(Item, index)" 到列表中的最佳索引?
考虑使用 SortedSet<T>
,它具有对保持列表排序的内置支持。这样做的好处是保证内容始终按排序顺序排列,而不是依赖您的代码在列表被修改时正确遵守排序顺序。
万一有人遇到这个问题 - 第一个解决方案是在提问之前总是仔细阅读文档。
BinarySearch(IComparer) return如果未找到匹配项,则下一个最佳位置的按位补充,因此它在填充列表时满足 "binary tree sort" 列表的需求。当我看到 return "-1" 时,我错误地得出了 "not found" 的结论,因为我经常将 "-1" 用于 "not found" 而整数本应为正数。