我有一个项目类和一个项目字典。字典中的每个项目都有一个唯一的优先级(1 到 N)。当我从字典中删除一个项目时,所有其他优先级都会更新。我想在字典中实现一些增加/减少优先级。如果我想增加单个项目的优先级,我将优先级与下一个较低的项目交换。问题是增加项目集合的优先级
public class Item
{
public string key;
public string data;
public int Priority;
}
Dictionary<string, Item> allItems = new Dictionary<string, Item>();
public void AddToQueue(Item item)
{
item.Priority = allItems.Count + 1;
allItems[item.key] = item;
}
public void PriorityUp(Item it)
{
if(it.Priority <= 1)
return;
it.Priority--;
foreach(var item in allItems )
if(item.Value.Priority == it.Priority)
{
item.Value.Priority++;
break;
}
}
public void PriorityUp(IEnumerable<Item> items)
{
//TODO
}
我有字典以便有效地查找项目。增加某些项目的优先级必须使其他项目的优先级发生一些变化
更清楚地说:我有 N 个项目的集合(列表、数组、字典......)我选择字典是因为我还必须执行一些其他操作。每个项目都有一个字段优先级,具有一些唯一值 1<=P<=N。
当我选择一些并增加/减少 P 时,我想找到所有项目的结果优先级(1 到 N)。