1. 程式人生 > >C#資料結構彙總

C#資料結構彙總

對C#涉及到的資料結構做了一下簡單的彙總,若有遺漏,歡迎補充~~

還是以學習為目的,在此只是簡單的介紹一下,希望對大家能有所幫助,能力有限為了不誤導大家,不做詳細深入的解析,還望見諒,非常歡迎大大們補充~~

1. 陣列 Array

int[] array = new int[] { }; //  常用,長度固定,需要在初始化時指定長度

//  在記憶體中是連續的,遍歷速度快,增加刪除元素慢,即增刪慢,改差快 //  增刪元素,最好從陣列最後一個或第一個位置操作,儘量避免從中間增刪

    void ArrayTest()
    {
        //陣列比較常用
        int[] intArr01 = new int[5];
        int[] intArr02 = new int[] { 1, 2, 3, 4, 5 };
        int[] intArr03 = new int[5] { 1, 2, 3, 4, 5 };
        int[] intArr04 = { 1, 2, 3, 4, 5 };
        //多維陣列,宣告賦值同上
        int[,] intArr05 = new int[5, 5];
        int[,,] intArr06 = new int[5, 5, 5];
        //交錯陣列,可以理解為元素是int[]的陣列
        //與多維陣列不同的是,子陣列長度可以不同
        int[][] intArr07 = new int[5][];
        intArr07[0] = new int[1];
        intArr07[1] = new int[2];
    }

C# 陣列(Array) http://www.runoob.com/csharp/csharp-array.htmlC# 多維陣列 http://www.runoob.com/csharp/csharp-multi-dimensional-arrays.htmlC# 交錯陣列 http://www.runoob.com/csharp/csharp-jagged-arrays.htmlC# Array 類 http://www.runoob.com/csharp/csharp-array-class.html

2. 列表 List<T>

List<int> list = new List<int>();

//  常用,與陣列互補,長度不固定

//  在記憶體中不連續,每個元素記憶體地址分別記錄,遍歷速度慢,增刪速度快,方便從任意插入或刪除元素

常用,不多說

3. 字典 Dictionary

Dictionary<int, string> dictionary = new Dictionary<int, string>();

//  常用,採用鍵值對的方式,key與value一一對應,key不能為空不能重複,value任意

//  長度不固定,根據Key值查詢元素,速度較快,增刪改查速度都較快,不足之處就是佔用記憶體相對較大

4. 動態陣列 ArrayList

ArrayList arrayList = new ArrayList();

//  與陣列類似,長度不固定,會自動修改ArrayList長度

//  只要元素型別為object,都可加入到ArrayList,但這樣就是有int、float、string多種資料存在一個容器裡

//  就需要裝箱、拆箱操作,( int a = 10; object obj = (object)a; ),既不安全又耗效能,不推薦使用

http://www.runoob.com/csharp/csharp-arraylist.html

5. 排序列表 SortedList

SortedList<int, string> sortedList = new SortedList<int, string>();

//  與字典相似,鍵值對的方式,根據key值自動進行排序

    void SortedListTest()
    {
        SortedList<int, string>; sorteList = new SortedList<int, string>();
        sorteList.Add(4, "四");
        sorteList.Add(1, "一");
        sorteList.Add(3, "三");
        sorteList.Add(2, "二");
        sorteList.Add(5, "五");
        foreach (var item in sorteList)
        {
            Debug.Log(item.Key + "  " + item.Value);
        }
    }

http://www.runoob.com/csharp/csharp-sortedlist.html

6. 排序字典 SortedDictionary

SortedDictionary<int, string> sortedDictionary = new SortedDictionary<int, string>();

//  與SortedList無比相似

https://blog.csdn.net/ma_jiang/article/details/78600043

7. 雙向連結串列 LinkedList

LinkedList<int> linkedList = new LinkedList<int>();

//  元素指向前後元素,只能從第一個依次訪問

//  插入新元素,只需修改插入位置的前後元素引用即可

     void LinkedListTest()
    {
        LinkedList<int> linkedList = new LinkedList<int>();
        //定義第一個元素,返回節點
        LinkedListNode<int> firstNode = linkedList.AddFirst(1);
        //定義最後一個元素,返回節點
        LinkedListNode<int> lastNode = linkedList.AddLast(4);
        //在指定節點之後插入元素
        linkedList.AddAfter(firstNode, 2);
        //在指定節點之前插入元素
        linkedList.AddBefore(lastNode, 3);
        //移除元素
        linkedList.Remove(3);
        linkedList.RemoveFirst();
        linkedList.RemoveLast();
        //更多方法可檢視定義,在此不一一列舉
    }

8. 雜湊表 Hashtable

Hashtable hashtable = new Hashtable();

//  與字典類似,採用鍵值對的方式,使用雜湊演算法進行無序儲存,key、value均為object型別,儲存是需要型別轉換

    void HashtableTest()
    {
        Hashtable hashtable = new Hashtable();
        //hashtable.Add(object key, object value);
        hashtable.Add(1, "Test01");
        hashtable.Add("2", "Test02");
        hashtable.Remove(1);
        int count = hashtable.Count;
        hashtable.Clear();
        //更多方法可檢視定義
    }

http://www.runoob.com/csharp/csharp-hashtable.html

9. 堆疊 Stack

Stack stack = new Stack();

//先進後出,元素為object

    void StackTest()
    {
        Stack stack = new Stack();
        //新增元素
        stack.Push(1);
        //獲取並移除元素,取最後新增的元素
        object obj = stack.Pop();
        //獲取但不移除元素,取最後新增的元素
        obj = stack.Peek();
    }

http://www.runoob.com/csharp/csharp-stack.html

10. 佇列 Queue

Queue queue = new Queue();

//  先進先出,與Stack相反,元素為object

    void QueueTest()
    {
        //用法與Stack類似
        Queue queue = new Queue();
        //新增元素
        queue.Enqueue(1);
        //獲取並移除元素,取最先新增的元素
        object obj = queue.Dequeue();
        //獲取但不移除元素,取最先新增的元素
        obj = queue.Peek();
    }

http://www.runoob.com/csharp/csharp-queue.html

11. 點陣列 BitArray

BitArray bitArray = new BitArray(10);

//  不常用,元素為bool值

http://www.runoob.com/csharp/csharp-bitarray.html

12. 雜湊集 HashSet

HashSet<string> hashSet = new HashSet<string>();

//  不常用,無序列表