有序集
有序集合和集合一样也是元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个可以被排序的分数。
有序集合是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数却可以重复。
可用方法
- Add
- Clear
- Count
- Contains
- First
- GetElementByRank
- GetElementByRevRank
- GetElementRangeByRank
- GetElementRangeByScore
- GetScore
- GetRank
- GetRevRank
- GetRangeCount
- Last
- Pop
- Remove
- RemoveRangeByRank
- RemoveRangeByScore
- ReverseIterator
- Shift
- ToArray
Add
添加一个element
到有序集合,或者如果它已经存在则更新其分数,并排序到正确的位置上。
sortset.Add("this is element" , 10);
Clear
清空有序集中的所有元素。
sortset.Clear();
Count
获取有序集的element
数量。
var num = sortset.Count;
Contains
判断有序集中是否存在element
。
var isExists = sortset.Contains("this is element");
First
获取有序集中的第一个元素。如果有序集为空则引发InvalidOperationException
异常。
var element = sortset.First();
GetElementByRank
根据排名获取元素 (有序集成员按照Score从小到大排序)
var element = sortset.GetElementByRank(10);
GetElementByRevRank
根据排名获取元素 (有序集成员按照Score从大到小排序)
var element = sortset.GetElementByRevRank(10);
GetElementRangeByRank
根据排名
获取范围内的元素列表,排序按照排名从小到大。(默认包括等于min
或max
)
var list = sortset.GetElementRangeByRank(10,20);
GetElementRangeByScore
根据分数
获取范围内的元素列表,排序按照分数从小到大。(默认包括等于min
或max
)
var list = sortset.GetElementRangeByScore(100,200);
GetScore
返回有序集中element
的分数,如果element
不存在则引发KeyNotFoundException
。
var score = sortset.GetScore("this is element");
GetRank
获取element
的排名 , 有序集成员按照Score从小到大
排序。如果返回-1则表示没有找到元素。
var rank = sortset.GetRank("this is element");
GetRevRank
获取element
的排名 , 有序集成员按照Score从大到小
排序。如果返回-1则表示没有找到元素。
var rank = sortset.GetRevRank("this is element");
GetRangeCount
获取分数区间内的元素数量。(默认包括等于min
或max
)
var num = sortset.GetRangeCount(10,100);
Last
获取有序集中的最后一个元素。如果有序集为空则引发InvalidOperationException
异常。
var element = sortset.Last();
Pop
移除并返回有序集尾部的元素。如果有序集为空则引发InvalidOperationException
异常。
var element = sortset.Pop();
Remove
移除有序集合中的指定的element
,如果移除失败则返回false
。
var isSuccess = sortset.Remove("this is element");
RemoveRangeByRank
根据指定的排名范围
移除范围内的所有element
,并返回移除元素的数量。(默认包括等于min
或max
)
int remove = sortset.RemoveRangeByRank(10,20);
RemoveRangeByScore
根据指定的分数范围
移除范围内的所有element
,并返回移除元素的数量。(默认包括等于min
或max
)
int remove = sortset.RemoveRangeByScore(100,200);
ReverseIterator
反转迭代器迭代顺序。
注意,这并不是真正意义反转整个有序集,只是反转了迭代顺序。
sortset.ReverseIterator();
Shift
移除并返回有序集头部的元素。如果有序集为空则引发InvalidOperationException
异常。
var element = sortset.Shift();
ToArray
将有序集转为数组。
var array = sortset.ToArray();