C#中的集合

Posted 老桂博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中的集合相关的知识,希望对你有一定的参考价值。

       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
             */
        

 

  想要更快更方便的了解相关知识,可以关注微信公众号 

 

 

****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524

以上是关于C#中的集合的主要内容,如果未能解决你的问题,请参考以下文章

C#中的常见集合类的比较

为通用 c# 集合中的每个值调用一个函数[重复]

C#中的泛型和泛型集合

比较 C# 中的字符串片段并从集合中删除项目

C#多线程开发-并发集合中的ConcurrentQueue

C#方法输入输出集合中的多个泛型类型