C#中的集合類


集合相當於容器,用於將一系列相似的項組合在一起。

集合可以分為泛型集合類和非泛型集合類。

多數集合類都是派生自ICollection、IComparer、IEnumerable、IList、IDictionary和IDictionaryEnumerator接口以及它們的等效泛型接口,可繼承這些接口來創建新集合類。

ArrayList和List<T>

  • 相當於可以動態增刪的動態數組
  •  內部有buffer,可以添加數據,buffer根據需要可以擴充

 

 

棧:Stack<T>

隊列:Queue<T>

雙向鏈表:LinkedList<T>

HashTable和Dictionary<TKey, Tvalue>

  •  相當於鍵值對的集合
  • 按照鍵進行查詢時,比在List中搜索的效率要高,可用於程序優化

 

  •  用[]進行訪問,表示獲取,增加,刪除,修改
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("Ton", "123");
dic["Jane"] = "333";
foreach(string key in dic.Keys)
{
    Console.WriteLine(key + ":" + dic[key]);
}

為什么foreach既可以遍歷數組,又可以遍歷集合?

for(類型  變量名  in xxx)

  • xxxx必須實現一個GetEnumerator方法,該方法返回一個IEnumerator對象
  • xxxx可以實現IEnumerable接口,來添加GetEnumerator方法 

 

常用的集合類

 

集合元素的排序

1. 有序集合

  • SortedList<T>, SortedSet<T>, SortedDictionary<T>
  • 這些集合每插入就會排好序

2. 使用集合的Sort方法

  • Array.Sort(arr, (a, b)=>a.Length-b.Length)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 基礎類學習
{
    public class Test
    {
        public static void Main()
        {
            string[] arr = { "Apple", "Pearl", "Banana", "AA" };
            show(arr);

            //Array.Sort(arr);  // 默認按字典序
            Array.Sort(arr, (a, b) => a.Length - b.Length);
            show(arr);

            int i = Array.BinarySearch(arr, "Apple");
            Console.WriteLine(i);

            Array.Reverse(arr);
            show(arr);
        }
        public static void show(object[] arr)
        {
            foreach (object obj in arr)
                Console.Write(obj + " ");
            Console.WriteLine();
        }
    }
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM