• C# 集合


    集合

    数组的大小是固定的。如果元素个数是动态的,就应使用集合类。List 和 ArrayList 是与数组相当的集合类。还有其他类型的集合:队列、栈、链表和字典。

    集合接口和类型

    集合类可以组合为集合,存储 Object 类型的元素和泛型集合类。
    对象类型的集合位于 System.Collections 命名空间;泛型集合类位于 System.Collections. Generic
    命名空间;专用于特定类型的集合类位于 System.Collections.Specialized 命名空间。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    列表

    .NET Framework 为动态列表提供了类 ArrayList 和 List。。System.Collections.Generic 命名空间中的类 List的用法非常类似于 System.Collections 命名空间中的 ArrayList 类。
    ArrayList objectList = new ArrayList();
    List intList = new List();
    List racers = new List();
    intList.Add(1);
    intList.Add(2);

    队列

    队列是其元素以先进先出(FIFO)的方式来处理的集合。在.NET 的 System.Collections 命名空间中有非泛型类 Queue,在 System.Collections.Generic 命名空间中有泛型类 Queue。这两个类的功能非常类似,但泛型类是强类型化的,定义了类型 T,而非泛型类基于 Object 类型。
    在这里插入图片描述

    栈是与队列非常类似的另一个容器,只是要使用不同的方法访问栈。最后添加到栈中的元素会最先读取。栈是一个后进先出(LIFO)容器。与 Queue 类相同,非泛型类 Statck 也执行了 ICollection、IEnumerable 和 ICloneable 接口;泛型类Statck实现了 IEnumerable、ICollection 和 IEnumerable 接口。用 Push()方法在栈中添加元素,用 Pop()方法获取最近添加的元素。
    在这里插入图片描述
    Stack alphabet = new Stack();
    alphabet.Push(‘A’);
    alphabet.Push(‘B’);

    链表

    LinkedList 集合类没有非泛型集合的类似版本。LinkedList 是一个双向链表,其元素指向它前面和后面的元素。

    在这里插入图片描述

    有序表

    如果需要排好序的表,可以使用 SortedList。这个类按照键给元素排序。
    在这里插入图片描述
    在这里插入图片描述

    字典

    字典表示一种非常复杂的数据结构,这种数据结构允许按照某个键来访问元素。字典也称为映射或散列表。字典的主要特性是能根据键快速查找值。也可以自由添加和删除元素,这有点像List,但没有在内存中移动后续元素的性能开销。
    创建一个新的 Dictionary实例;
    可以使用 Dictionary类的索引器替代 TryGetValue()方法,来访问存储在字典中
    的值;

    Loopup

    Dictionary只为每个键支持一个值。新类 Lookup是.NET 3.5 中新增的,它类似于 Dictionary,但把键映射到一个值集上。这个类在程序集System.Core中实现,用 System.Linq 命名空间定义。
    在这里插入图片描述

    HashSet

    System.Collections.Generic 命名空间中包含一个新的集合类:HashSet。这个集合类包含不重复项的无序列表。这种集合称为"集(set)"。
    在这里插入图片描述

    位数组

    如果需要处理许多位,就可以使用类 BitArray 和结构 BitVector32。BitArray 位于命名空间System.Collections,BitVector32 位于命名空间 System.Collections.Specialized。这两种类型最重要的区别是,BitArray 可以重新设置大小,如果事先不知道需要的位数,就可以使用 BitArray,它可以包含非常多的位。BitVector32 是基于栈的,因此比较快。BitVector32 仅包含 32 位,存储在一个整数中。
    在这里插入图片描述

    static void DisplayBits(BitArray bits)
    {
    	foreach (bool bit in bits)
    	{
    		Console.Write(bit ? 1 : 0);
    	}
    }
    
    BitArray bits1 = new BitArray(8);
    bits1.SetAll(true);
    bits1.Set(1, false);
    bits1[5] = false;
    bits1[7] = false;
    Console.Write("initialized:");
    DisplayBits(bits1);
    Console.WriteLine();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    从统计语言模型到预训练语言模型---统计语言模型
    【YOLO模型】(4)--YOLO V3超超超超详解!!!
    echarts
    标签正则:标签平滑、标签蒸馏和自纠正
    一次网络请求的流程
    逍遥自在学C语言 | 指针陷阱-空指针与野指针
    数据结构与算法:二分查找(心得)
    IOS热门面试题一
    Linux下C++开发笔记--CMakeLists.txt重要指令和CMake常用变量
    汽车驾驶智能座舱太阳光模拟器老化试验
  • 原文地址:https://blog.csdn.net/u013420428/article/details/133357953