C# 集合

public class ArrayClass
{
    public ArrayClass()
    {
        array = new int[10] { 1, 2, 3, 4, 5, 7, 1, 2, 3, 4 };
        list = new List<int>();
        LinkedList = new LinkedList<int>();
        HashSet = new HashSet<int>();
        Dictionary = new Dictionary<string, string>();
        Queue = new Queue<int>();
        Stack = new Stack<int>();
    }

    /*固定大小的集合,适用于存储和操作固定数量的元素,特别是当需要快速访问元素时。
      适用于存储基本数据类型(如int、double等)的集合*/
    public int[] array { get; set; }
    /*可变大小的集合,适用于需要动态添加或删除元素的场景。
    提供了丰富的操作,如排序、搜索、插入和删除,适用于需要灵活操作元素的情况。
    适用于缓存、数据暂存、任务列表等场景。*/
    public List<int> list { get; set; }
    /*适用于需要频繁在列表中间插入或删除元素的场景,因为链表在内存中的存储不是连续的,所以插入和删除操作效率较高。
     可以用于实现一些特殊的算法和数据结构,如循环链表、双向链表等。*/
    public LinkedList<int> LinkedList { get; set; }
    /*用于存储不重复的元素集合,适用于需要快速判断元素是否存在的场景。
     在处理唯一性约束、去重操作等方面特别有用。*/
    public HashSet<int> HashSet { get; set; }
    /*适用于存储键值对的数据结构,键是唯一的,可以快速通过键来查找和访问对应的值。
    在缓存系统、配置文件解析、数据映射等场景中非常有用。*/
    public Dictionary<string, string> Dictionary { get; set; }
    /*先进先出(FIFO)的数据结构,适用于需要按顺序处理任务的场景。
     在消息队列、任务调度、缓存等场景中常用。*/
    public Queue<int> Queue { get; set; }
    /*后进先出(LIFO)的数据结构,适用于需要按照后进先出的顺序处理元素的场景。
     在函数调用栈、撤销操作、括号匹配等场景中常用。*/
    public Stack<int> Stack { get; set; } = new Stack<int>();
    //public SortedList<int, int> sortedList { get; set; } = new SortedList<int, int>();
    //public SortedSet<int> sortedSet = new SortedSet<int>();
    //public SortedDictionary<int, int> sortedDictionary = new SortedDictionary<int, int>();
}
ArrayClass arrayClass = new ArrayClass();
Console.WriteLine("Array:" + string.Join(",", arrayClass.array));
arrayClass.list.AddRange(arrayClass.array);
Console.WriteLine("List:" + string.Join(",", arrayClass.list));
//LinkedList
arrayClass.LinkedList.AddLast(10);
arrayClass.LinkedList.AddFirst(9);
var node = arrayClass.LinkedList.Find(9);
if (node != null) arrayClass.LinkedList.AddBefore(node, 8);
var node2 = arrayClass.LinkedList.Find(7);
if (node2 != null) arrayClass.LinkedList.AddBefore(node2, 11);
Console.WriteLine("LinkedList:" + string.Join(",", arrayClass.LinkedList));
//HashSet
arrayClass.HashSet.Add(1);
arrayClass.HashSet.Add(2);
arrayClass.HashSet.Add(3);
arrayClass.HashSet.Add(2);
Console.WriteLine("HashSet:" + string.Join(",", arrayClass.HashSet));
Console.WriteLine("HashSet Contains 4:" + arrayClass.HashSet.Contains(4));
Console.WriteLine("HashSet Contains 1:" + arrayClass.HashSet.Contains(4));
//Dictionary
arrayClass.Dictionary.Add("name", "daiweikuan");
arrayClass.Dictionary.Add("age", "18");
Console.WriteLine("Dictionary:" + string.Join(",", arrayClass.Dictionary));
Console.WriteLine("Dictionary get key Name:" + arrayClass.Dictionary["name"]);
//Queue
arrayClass.Queue.Enqueue(1);
arrayClass.Queue.Enqueue(2);
arrayClass.Queue.Enqueue(3);
arrayClass.Queue.Enqueue(4);
Console.WriteLine("Queue:" + string.Join(",", arrayClass.Queue));
while (arrayClass.Queue.Count > 0)
{
    Console.WriteLine("Queue 出队列:" + arrayClass.Queue.Dequeue());
}
//Stack
arrayClass.Stack.Push(1);
arrayClass.Stack.Push(2);
arrayClass.Stack.Push(3);
arrayClass.Stack.Push(4);
Console.WriteLine("Stack:" + string.Join(",", arrayClass.Stack));
while (arrayClass.Stack.Count > 0)
{
    Console.WriteLine("Stack 出栈:" + arrayClass.Stack.Pop());
}

 

posted @ 2024-04-01 15:34  DaiWK  阅读(2)  评论(0编辑  收藏  举报