在工作中經常會遇到物件陣列根據某個屬性進行排序的問題。這裡介紹乙個方法。
以汽車為例: public class car:
set
} private string type;
public string type
set
} }
car cars;現在需要排序,首先我們想根據weight進行排序,大家自然會想到冒泡演算法。不過這個肯定不是最好的,這裡提供乙個簡便的方法。
我們將類car實現介面icomparable使其能夠使用array.sort()。
**如下:
public class car:icomparable
set
} private string type;
public string type
set
} icomparable 成員#region icomparable成員
public int
compareto(car other)
#endregion
}實現該方法以後我們就可以直接使用如下**來對cars進行排序了。
car arr = new car ;
array.sort(arr);但是隨著專案的發展的發展我們會迎來新的問題,我們現在又需要根據type排序了,怎麼辦呢?
不用擔心我們只要使用乙個最簡單的adapter模式就能解決這個問題
下面我們來建立這個介面卡:
public class comparacaradapter : icomparer
#endregion
}然後如此呼叫:
array.sort(arr,new comparacaradapter());但是這樣如果屬性很多,會產生很多的類,怎麼辦呢。那麼利用反射吧。將comparacaradapter改造為:
public class comparacaradapter : icomparer
icomparer 成員#region icomparer成員
public int
compare(car x, car y)
else
throw new notsupportedexception();
} #endregion
} 呼叫 array.sort(arr, new comparacaradapter("weight"));ok搞定,應該足夠靈活了吧。
C 泛型 使用泛型List
一 泛型的優點 效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。重用。使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。使用泛型 使用泛型...
C 泛型 使用泛型List
一 泛型的優點 效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。重用。使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。使用泛型 使用泛型...
list泛型排序的方法
如果這樣定義 listlist newlist 那麼只需要用list.sort 即可。就會按照英文單詞進行排序。但是如果這個string是如下類呢?public class dto public int id public string name 這樣定義 listlist newlist 想按照n...