當前位置:成語大全網 - 書法字典 - 如何在c#中實現可重復的鍵值

如何在c#中實現可重復的鍵值

二話不說直接編碼軟糖。

多排序列表<按關鍵字排序

///先按鍵排序再按值排序的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);}

}

返回結果;

}

}

}