多排序列表<按關鍵字排序
///先按鍵排序再按值排序的SortedList,鍵和值都可以重復,但鍵-值對禁止完全相同。
///& lt;/summary & gt;
公共類多分類列表& ltTKey,TValue & gt:SortedList & ltTKey,TValue & gt其中TKey : IComparable
{
///& lt;總結& gt
///Equal鍵也會返回不等式。
///& lt;/summary & gt;
私有類MyComparer & ltTCKey & gt:IComparer & ltTCKey & gt其中TCKey : IComparable
{
公共int比較(TCKey x,TCKey y)
{
int I = x . compare to(y);
//(-1)x在y之前//?(1)x在y之後。
if(I = = 0){ return(-1);} else { return I;}
}
}
public muti sorted list():base(new my comparer & lt;TKey & gt()) { }
公共新void Add(TKey key,TValue value)
{ ?
foreach(key value pair & ltTKey,TValue & gt本中的項目)
{//檢查該鍵是否可用,值是否重復?
如果(項。等於(鍵)和& amp項目。value . Equals(value)){ return;}
}
基地。Add(鍵,值);
}
公共新void刪除(TKey密鑰)
{
for(int I = 0;我& lt這個。數數;i++)
{
if(鍵【I】。equals(key)){ base。remove at㈠;}
}
}
公共void刪除(t值值)
{
for(int I = 0;我& lt這個。數數;i++)
{
if(值【I】。等於(值)){ base。remove at㈠;}
}
}
公共void刪除(TKey鍵,TValue值)
{
for(int I = 0;我& lt這個。數數;i++)
{
if(鍵【I】。等於(鍵)& amp價值觀【I】。等於(值)){ base。remove at㈠;}
}
}
公共新值這個【t密鑰】
{
get { return base【key】;}
}
///& lt;總結& gt
///返回與鍵對應的值列表。
///& lt;/summary & gt;
///& lt;param name =“key“& gt;& lt/param & gt;
///& lt;Param name=“升序“》& lt/param & gt;
///& lt;退貨& gtreturns IList(Of value)。
public IList<TValue & gt這個【TKey key,bool升序】?
{
獲取{
Var結果=新列表
for(int I = 0;我& lt數數;i++)
{
if(鍵【I】。等於(鍵))
{結果。add(Values【I】);}
}
返回結果;
}
}
}
如果沒有排序,它實際上是用元組打包的,它使用Item1和Item 2//
///按默認順序排序的字典、鍵和值可以重復,但鍵-值對禁止完全相同。
///& lt;para》gt;繼承自
///& lt;/summary & gt;
公共類元組列表& ltTKey,TValue & gt:列表& lt元組& ltTKey,TValue & gt& gt{
公共void Add(TKey key,t value value ){
foreach(var item in this){//檢查是否有這個鍵,並檢查值是否重復?
如果(項。項目1。等於(鍵)& amp& amp項目。item 2 . Equals(value)){ return;}
}
基地。添加(新元組& ltTKey,TValue & gt(鍵,值));
}
公共void刪除(TKey密鑰){
foreach(此中的var項目){
如果(項。項目1。equals(key)){ Remove(item);}
}
}
///& lt;總結& gt
///返回與鍵對應的多個值的列表《see cref =“IList { TValue }“/& gt;
///& lt;/summary & gt;
///& lt;param name =“key“& gt;& lt/param & gt;
///& lt;Param name=“升序“》& lt/param & gt;
///& lt;退貨& gtreturns IList(Of value)。
public IList<TValue & gt此【TKey key,bool升序= false】{
獲取{
Var結果=新列表
foreach(var item in this){//檢查是否有這個鍵,並檢查值是否重復?
if(item . item 1 . equals(key)){ result . add(item . item 2);}
}
返回結果;
}
}
}