簡體   English   中英

如何將Array.Sort應用於集合 <T> ?

[英]How to apply Array.Sort to Collection<T>?

我有一個集合(集合中有大於100K的自定義復雜項目,添加新項目的情況確實經常發生)。 我只需要對它進行一次排序-在顯示它之前。 為了簡化我的問題,可以說我有一個需要排序的整數集合:

private static void Main(string[] args)
{
    var collection = new Collection<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
    var list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
    var array = new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

    // How to apply Array.Sort to Collection<T> ?
    list.Sort();       //ok
    Array.Sort(array); //ok
}

基本上是list.Sort(); 使用Array.Sort<T>(this._items, index, count, comparer);

如何對我的Collection<T>排序? (無復制)

沒有方便的方法可以做到這一點。 即使對於子類( protected ), Collection<T>也不提供對內部緩沖區的原始訪問。 否則,您將無法進行干凈的就地排序。

您可以在基礎.Itemsprotected )上手動實現排序,但是這需要大量工作並且效率很低。

什么,你也可以做的是:

  • 從陣列池中租借陣列
  • 將數據從本地集合復制到租用數組
  • 排序數組
  • 清除並重新添加已排序數組中的所有內容,或覆蓋已排序數組中逐索引的項目
  • 將租用的數組返回到數組池

但是,我個人可能會說“如果需要排序,請使用List<T> ”-這樣可以節省很多工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM