首页 > 编程语言 >C# 集合

C# 集合

时间:2024-04-01 15:47:26浏览次数:17  
标签:Console LinkedList HashSet C# Queue arrayClass 集合 Stack

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());
}

 

标签:Console,LinkedList,HashSet,C#,Queue,arrayClass,集合,Stack
From: https://www.cnblogs.com/daiwk/p/18108577

相关文章

  • 微服务集成Spring Cloud Alibaba Seata(一)Seata服务搭建
    1、Seata介绍Seata是阿里开源的一款分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。数据库事务我们都知道,事务都是遵循ACID原则。而通过使用Seata可以实现在两个服务模块通过RPC调用时触发事务,如果有异常会实现业务数据回滚,保证数据的一致性。官网地址:https://......
  • 婴儿沐浴椅CPC认证 亚马逊沐浴椅子CPC认证
    婴儿沐浴椅如果您在亚马逊商城发布商品,则必须遵守适用于这些商品和商品信息的所有联邦、州和地方法律以及亚马逊政策(包括本政策)。本政策适用的婴儿沐浴椅婴儿沐浴椅是一种用于浴缸、盥洗盆或类似沐浴设备中的一种支撑物,可在看护人为婴儿沐浴期间让婴儿坐在上面并为其前、后......
  • guice的MethodInterceptor的用法和使用场景和设计思想
    Guice是一个轻量级的依赖注入框架,它也提供了AOP(面向切面编程)的功能,其中MethodInterceptor是Guice用来实现AOP的一个接口。MethodInterceptor的用法:MethodInterceptor接口是AOP联盟(AOPAlliance)的一部分,Guice使用这个接口来定义方法拦截器。拦截器可以在方法执行前后添加......
  • Vue学习笔记69--activated + deactivated
    activated+deactivated注:生命周期学习可参考学习笔记33两个新的生命周期钩子作用:路由组件所独有的两个构造,用于捕获路由组件的激活状态具体名称:activated--路由组件被激活时触发+deactivated--路由组件失活时触发 示例如下所示:1<template>2<div>3<......
  • php采用aes算法,字符编码utf8,填充模式ECB,填充:ZeroPadding,编码:base64,实现加密
    原文:https://blog.csdn.net/yinxinyue0621/article/details/129813334一、php:三种填充模式的区别(PKCS7Padding/PKCS5Padding/ZeroPadding)(一)常见的三种填充方式:我们知道某些加密算法要求明文需要按一定长度对齐,叫做块大小(BlockSize),比如16字节,那么对于一段任意的数据,加密前需要......
  • Django项目部署本地windows IIS(详细版)和static文件设置(页面样式正常显示)
    Django项目部署本地windowsIIS(详细版)和static文件设置(页面样式正常显示)原文链接:https://blog.csdn.net/hahahahanhanhan/article/details/134638020目录必要条件:一、下载并启用wfastcgi二、window安装IIS功能三、IIS管理器中添加网站1、复制项目2、复制wfastcgi.py文件......
  • macbook pip3路径报错
    执行pip3,提示:zsh:/usr/local/bin/pip3:badinterpreter:/Library/Developer/CommandLineTools/usr/bin/python3:nosuchfileordirectory问题:原因:python路径不正确方法:➜whichpython3/usr/local/bin/python➜bincd/usr/local/bin➜binvimpip3修改第一......
  • 微服务篇---springcloud高频面试题(2)☁️
    SpringCloud项目中有没有做过限流?怎么做的?Nginx限流-控制速率Nginx限流-控制连接数......
  • 飞天发布时刻丨阿里云 ApsaraMQ 全面升级,携手 Confluent 发布全新产品
    随着云计算和大数据的快速发展,云原生消息队列作为分布式系统架构中的关键组件,正以前所未有的速度向前发展。3月29日10:00,阿里云飞天发布时刻,阿里云消息队列服务将宣布向ApsaraMQ进行全面升级,实现全系产品Serverless化,并联合全球领先的数据流平台Confluent共同发布全新产......
  • Django+nginx+uwsgi +apscheduler任务重复执行问题
    Django+nginx+uwsgi+apscheduler任务重复执行问题1、问题描述通过Django+nginx+uwsgi部署项目,前端页面通过API接口动态添加、管理apscheduler定时任务。由于uwsgi启动多个worker,导致每个worker执行一次定时任务,导致任务的重复执行。如下图,因为uwsgi.ini文件......