You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Dictionary值中的SortedSet使用自定义比较器

解决字典中SortedSet的自定义比较器初始化问题

你可以通过以下几种方式给字典值中的SortedSet<Transaction>指定自定义比较器:

1. 添加键值对时直接初始化

当你向字典中添加新的交易状态对应的集合时,直接创建带CustomComparer的SortedSet实例:

// 假设status是某个TransactionStatus枚举值
_transactionsByStatus.Add(status, new SortedSet<Transaction>(new CustomComparer()));

2. 预先初始化所有枚举状态的集合

如果TransactionStatus是枚举类型,你可以遍历所有枚举值,提前创建好带比较器的集合:

// 复用同一个比较器实例,减少对象创建开销
var customComparer = new CustomComparer();
foreach (TransactionStatus status in Enum.GetValues(typeof(TransactionStatus)))
{
    _transactionsByStatus.Add(status, new SortedSet<Transaction>(customComparer));
}

3. 按需创建(访问时自动初始化)

如果不想提前创建所有集合,可以在需要访问某个状态的集合时,检查是否存在,不存在则创建带比较器的实例:

TransactionStatus targetStatus = ...; // 目标交易状态
if (!_transactionsByStatus.TryGetValue(targetStatus, out var transactionSet))
{
    transactionSet = new SortedSet<Transaction>(new CustomComparer());
    _transactionsByStatus[targetStatus] = transactionSet;
}
// 此时transactionSet就是带自定义比较器的集合,可直接使用

需要注意的是,如果所有集合的排序规则一致,建议复用同一个CustomComparer实例,避免重复创建对象,提升代码效率。

内容的提问来源于stack exchange,提问作者NUM1NEX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:45:40