C#中的集合

劉靖凱發表於2022-01-26

       C#中有很多集合型別,比如List<T>,Dictionary<TKey,TValue>,這些是我們常用的,但也有一些少眾的場合使用的集合:特徵型別的ReadOnly集合,Sort集合;封裝特定演算法型別的集合:Queue<T>(先進先出),Stack<T>(後進先出),LinkedList<T>(連結串列,每個元素承上啟下);這些集合都是在特定的場合下使用,因為他們的特性限制了他的使用場景。

 

 

/// <summary>
        /// 只讀List
        /// </summary>
        static void ReadOnlyListTest()
        {
            IReadOnlyList<string> readOnlyList = new List<string>() { "a", "b", "c" };
            foreach (var item in readOnlyList)
            {
                Console.WriteLine(item);
            }
            /*輸出結果
             a
             b
             c
             */
        }
        /// <summary>
        /// 只讀字典
        /// </summary>
        static void ReadOnlyDictionaryTest()
        {
            var readOnlyDictionary = new ReadOnlyDictionary<int, string>(
                new Dictionary<int, string>
                {
                    {5,"五"},
                    {1,"一"},
                    {10, "十"}
                });

            foreach (var item in readOnlyDictionary)
            {
                Console.WriteLine($"{item.Key}~{item.Value}");
            }
            /*輸出結果
             5~五
             1~一
             10~十
             */
        }

 

 

  /// <summary>
        /// 排序列表
        /// </summary>
        static void SortListTest()
        {
            var sortList = new SortedList<int, string>();
            sortList.Add(10, "十");
            sortList.Add(5, "五");
            sortList.Add(1, "一");
            Console.WriteLine(sortList.Keys);
            foreach (var item in sortList)
            {
                Console.WriteLine($"{item.Key}~{item.Value}");
            }
            /*輸出結果
             1~一
             5~五
             10~十
             */
        }
        /// <summary>
        /// 排序字典
        /// </summary>
        static void SortDictionaryTest()
        {
            var sortDic = new SortedDictionary<int, string>();
            sortDic.Add(10, "十");
            sortDic.Add(5, "五");
            sortDic.Add(1, "一");
            Console.WriteLine(sortDic.Keys);
            foreach (var item in sortDic)
            {
                Console.WriteLine($"{item.Key}~{item.Value}");
            }
            /*輸出結果
             1~一
             5~五
             10~十
            */
        }
        /// <summary>
        /// 排序set,不含重複值
        /// </summary>
        static void SortSetTest()
        {
            var sortSet = new SortedSet<int>();
            sortSet.Add(10);
            sortSet.Add(5);
            sortSet.Add(1);
            sortSet.Add(1);
            foreach (var item in sortSet)
            {
                Console.WriteLine(item);
            }
            /*輸出結果
             1
             5
             10
            */
        }

 

 

 

 

 

 

/// <summary>
        /// 連結串列:每個元素承上啟下
        /// </summary>
        static void LinkedListTest()
        {
            var linkedList = new LinkedList<string>();
            linkedList.AddLast("2");
            linkedList.AddLast("3");
            linkedList.AddLast("5");

            linkedList.AddFirst("1");

            linkedList.AddBefore(linkedList.Find("5"), "4");
            foreach (var item in linkedList)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine($"2前面的值:{linkedList.Find("2").Previous.Value}");
            Console.WriteLine($"2後面的值:{linkedList.Find("2").Next.Value}");

            /*輸出結果
             1
             2
             3
             4
             5
             2前面的值:1
             2後面的值:3
             */
        }
        /// <summary>
        /// 雜湊集合
        /// </summary>
        static void HashSetTest()
        {
            var hashSet = new HashSet<string>();
            hashSet.Add("a");
            hashSet.Add("c");
            hashSet.Add("b");
            hashSet.Add("a");
            hashSet.Add("c");
            hashSet.Add("b");
            foreach (var item in hashSet)
            {
                Console.WriteLine(item);
            }
            /*輸出結果
             a
             b
             c
             */
        }
        /// <summary>
        /// 佇列:先進先出
        /// </summary>
        static void QueueTest()
        {
            var queue = new Queue<int>();
            queue.Enqueue(1);
            queue.Enqueue(2);
            queue.Enqueue(3);
            foreach (var item in queue)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine($"dequeue元素:{queue.Dequeue()}");
            /*輸出結果
             1
             2
             3
             dequeue元素:1
             */
        }
        /// <summary>
        /// 堆疊:後進先出
        /// </summary>
        static void StackTest()
        {
            var stack = new Stack<int>();
            stack.Push(1);
            stack.Push(2);
            stack.Push(3);
            foreach (var item in stack)
            {
                Console.WriteLine(item);
            }
            //pop元素
            Console.WriteLine($"pop元素:{stack.Pop()}");
            /*輸出結果
             3
             2
             1
             pop元素:3
             */
        }

 

  想要更快更方便的瞭解相關知識,可以關注微信公眾號 

 

 

相關文章