C# 之门课程系列-11(c# 教程 school)

C# 之门课程系列-11(c# 教程 school)

编码文章call10242025-02-01 3:09:1923A+A-

集合

集合:队列,栈,链表,字典


列表

创建列表,List会自动扩充,元素添加到列表中后,列表的容量会扩大为可接纳4个元素,如果添加了第5个元素的大小会重新设置为包含8个元素。

 var lst = new List<int>(12);
            lst.Add(1);
            lst.TrimExcess();//去除不需要的容量
            Console.Write(lst.Capacity);
            Console.ReadKey();

一个例子

 static void print(List<int> lst)
        {
            foreach (var item in lst)
            {
                Console.Write(item + "\t");
            }
            Console.WriteLine();
        }
 var lst = new List<int>();
            for (int i = 0; i < 10; i++)
            {
                lst.Add(i);
            }
            print(lst);
            lst.Insert(2, 99);
            lst.Insert(5, 99);
            print(lst);
            lst.Remove(99);
            lst.Remove(99);
            lst.RemoveAt(2);
            print(lst);
            Console.ReadKey();
lst.ForEach(r => Console.WriteLine(r));
 lst.ForEach(r => Console.WriteLine(r));
            bool isfind = lst.Contains(8);
            int idx= lst.FindIndex(r => r == 5);
            Console.WriteLine(idx);
 List<int> lst1 = lst.FindAll(q => q > 5);
            print(lst1);

队列

队列是其元素以先进先出FIFO的方式来处理集合,先放入队列中的元素先读取。



一个例子

 class Book
        {
            public string Title { get; set; }
            public Book(string title)
            {
                this.Title = title;
            }
        }
 static void Main(string[] args)
        {
            Queue<Book> books = new Queue<Book>();
            books.Enqueue(new Book("A"));
            books.Enqueue(new Book("B"));
            books.Enqueue(new Book("C"));
            books.Dequeue();//读了并删除
            Console.WriteLine(books.Peek().Title);//读取头部元素
            foreach (var item in books)
            {
                Console.WriteLine(item.Title);
            }
            Console.ReadKey();
        }

栈与队列非常类似,栈是后进先出



一个例子

 Stack<Book> books = new Stack<Book>();
            books.Push(new Book("A"));
            books.Push(new Book("B"));
            books.Push(new Book("C"));
            books.Pop();//删除最后添加的元素
            Console.WriteLine(books.Peek().Title);
            foreach (var item in books)
            {
                Console.WriteLine(item.Title);
            }
            Console.ReadKey();
 class Book
        {
            public string Title { get; set; }
            public Book(string title)
            {
                this.Title = title;
            }
        }

链表

LinkedList<T>是一个双向链表,其元素指向它前面和后面的元素

优点是元素插入列表中间位置,非常快,缺点是查询只能一个接一个地访问

一个例子

LinkedList<Book> books = new LinkedList<Book>();
            LinkedListNode<Book> b = new LinkedListNode<Book>(new Book("A"));
            books.AddFirst(b);
            LinkedListNode<Book> c = new LinkedListNode<Book>(new Book("C"));
            books.AddFirst(c);
            books.AddLast(new LinkedListNode<Book>(new Book("B")));
            foreach (var item in books)
            {
                Console.WriteLine(item.Title);
            }
            Console.ReadKey();

有序列表

如果需要基于键对所需集合排序,就可以使用SortedList<Tkey,TValue>类,这个类按键给元素排序。

 var books = new SortedList<string, Book>();
            books.Add("C001", new Book("A1"));
            books.Add("E001", new Book("A3"));
            books.Add("D001", new Book("A2"));
            books.Add("1001", new Book("A4"));
            foreach (var item in books)
            {
                Console.WriteLine(item.Value.Title);
            }
            Console.ReadKey();

字典

 var books = new Dictionary<string, Book>();
            books.Add("C001", new Book("A1"));
            books.Add("E001", new Book("A3"));
            books.Add("D001", new Book("A2"));
            books.Add("1001", new Book("A4"));
            foreach (var item in books)
            {
                Console.WriteLine(item.Value.Title);
            }

Dictionary<[key], [value]>是一个泛型,Dictionary是一种变种的HashTable,是一个表示键和值的集合。

HashSet

 var books = new HashSet<Book>();
            books.Add(new Book("A1"));
            books.Add(new Book("A3"));
            books.Add(new Book("A2"));
            books.Add(new Book("A4"));
            foreach (var item in books)
            {
                Console.WriteLine(item.Title);
            }
            Console.ReadKey();

这个集合类包含不重复项的无序列表

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4