Skip to main content
 首页 » 编程设计

c#之添加重复数字时,哪个数字字典集合会重新排序项目

2024年01月26日30think

我的 C# 程序允许用户按优先级对项目进行数字排名。我编写了一个例程,当用户修改项目的等级时,它会自动按等级对项目进行排序。因此,当优先级为 3 的项目更改为 1 时,例行程序会使用前 3 个项目。之前排名 1、2 的项目将变为 2、3。同样,当优先级 1 的项目变为优先级 3 时,排名 2、3 的项目将变为 1、2。

现有的集合类是否内置了此功能?如果是这样,也将不胜感激代码示例。

请您参考如下方法:

C# 有一个 SortedSet<T>可以自定义排序的集合 IComparer<T>由用户提供。

但是,集合不会对已经在集合中的项目的更改使用react,即如果您更改已经在集合中的项目的优先级,它不会被移动自动向上或向下。

您需要从 SortedSet<T> 中删除项目,更改其优先级,然后再将其添加回来。这样集合将把它放在新的地方,移动其他项目以适应顺序的变化:

SortedSet<Project> prioritizedProjects = new SortedSet<Project>(new CompareProjByPriority()); 
... 
Project rePrioritize = ...; 
prioritizedProjects.Remove(rePrioritize); 
rePrioritize.Priority = 1; 
prioritizedProjects.Add(rePrioritize);