ArrayList中的排序

2021-09-08 20:52:32 字數 649 閱讀 1025

在用.net實現最短路徑(偶以前的blog有描述)的時候,需要使用有排序功能的堆疊。但是在.net中的stack沒有排序功能,因此考慮用排序的arraylist實現。

arraylist中有乙個sort方法來實現排序功能。 其公開了乙個介面,以實現自定義的排序。如:

public

class

nodedatacomparer : icomparer

#endregion

呼叫時,使用sort(new nodedatacomparer())即可。 (在向arraylist新增資料時,新增nodedata型別物件)

這種實現方法比較簡單,但是在使用時卻發現效能比較低,是以前用vb6編寫的 1/6。 仔細想了一下,可能是由於這兩個原因:

1、在使用arraylist時,需要頻繁使用box和unboxing。

2、排序演算法的低效。

針對這兩個問題,將演算法進行了調整,即:在向arraylist中插入資料時,按中值排序演算法,計算該元素所在的位置,使用insert方法插入。 這樣就避免了使用 arraylist的sort方法,效能得到了很大的提公升(6倍以上)。  至此,完成了.net平台下gis平台的最短路徑演算法。(核心部分與gis平台無關)

建議:如果arraylist需要頻繁排序,盡量避免使用sort方法。

ArrayList非泛型集合中的排序

使用arraylist集合對字串型別和封裝類進行排序 這是封裝類 using system using system.collections.generic using system.linq using system.text using system.threading.tasks namesp...

Java 列表ArrayList排序

對任意型別集合物件進行整體排序,排序時將此介面的實現傳遞給collections.sort方法或者arrays.sort方法排序.實現int compare t o1,t o2 方法,返回正數,零,負數各代表大於,等於,小於。舉例 liststus new arraylist student stu...

Array List和ArrayList的區別與

定義 public abstract class array icloneable,ilist,icollection,ienumerable,istructuralcomparable,istructuraequatable 陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元...