C#常用集合优缺点对比
先上结论:

在C#中,链表、一维数组、字典、List<T>和ArrayList是常见的数据集合类型,它们各有优缺点,适用于不同的场景。以下是它们的比较:
1. 一维数组 (T[])
优点:
-
性能高:数组在内存中是连续存储的,访问元素的时间复杂度为O(1)。
-
类型安全:数组是强类型的,编译时会进行类型检查。
-
内存占用少:数组没有额外的开销,存储效率高。
缺点:
-
固定大小:数组的大小在创建时确定,无法动态调整。
-
插入和删除效率低:插入或删除元素需要移动后续元素,时间复杂度为O(n)。
适用场景:适合元素数量固定且需要频繁访问的场景。
2. List<T>
优点:
-
动态大小:
List<T>可以根据需要动态调整大小。 -
类型安全:
List<T>是泛型集合,编译时会进行类型检查。 -
高效的随机访问:通过索引访问元素的时间复杂度为O(1)。
-
插入和删除效率较高:在末尾插入和删除元素的时间复杂度为O(1),但在中间插入或删除元素的时间复杂度为O(n)。
缺点:
-
内存占用较高:
List<T>内部使用数组实现,动态调整大小时会分配新的数组并复制元素,可能导致内存浪费。
适用场景:适合元素数量不固定且需要频繁访问的场景。
3. ArrayList
优点:
-
动态大小:
ArrayList可以根据需要动态调整大小。 -
灵活性:可以存储任何类型的对象。
缺点:
-
类型不安全:
ArrayList存储的是object类型,需要进行类型转换,可能导致运行时错误。 -
性能较低:由于存储的是
object类型,存取元素时需要进行装箱和拆箱操作,影响性能。 -
内存占用较高:与
List<T>类似,动态调整大小时可能导致内存浪费。
适用场景:适合需要存储不同类型对象的场景,但在现代C#代码中,建议使用List<T>代替ArrayList。
4. 链表 (LinkedList<T>)
优点:
-
高效的插入和删除:在链表中插入或删除元素的时间复杂度为O(1),尤其是在中间位置。
-
动态大小:链表可以根据需要动态调整大小。
缺点:
-
随机访问效率低:访问链表中的元素需要从头或尾遍历,时间复杂度为O(n)。
-
内存占用较高:每个元素都需要额外的内存来存储前后节点的引用。
适用场景:适合需要频繁在中间位置插入或删除元素的场景。
5. 字典 (Dictionary<TKey, TValue>)
优点:
-
高效的查找:通过键查找值的时间复杂度为O(1)。
-
类型安全:
Dictionary<TKey, TValue>是泛型集合,编译时会进行类型检查。 -
动态大小:字典可以根据需要动态调整大小。
缺点:
-
内存占用较高:字典需要额外的内存来存储哈希表和键值对。
-
无序:字典中的元素是无序的,如果需要有序集合,可以考虑使用
SortedDictionary<TKey, TValue>。
适用场景:适合需要通过键快速查找值的场景。
相关文章:
C#常用集合优缺点对比
先上结论: 在C#中,链表、一维数组、字典、List<T>和ArrayList是常见的数据集合类型,它们各有优缺点,适用于不同的场景。以下是它们的比较: 1. 一维数组 (T[]) 优点: 性能高:数组在内存中…...
多线程下jdk1.7的头插法导致的死循环问题
20250208 多线程下jdk1.7的头插法导致的死循环问题 多线程下jdk1.7的头插法导致的死循环问题 【新版Java面试专题视频教程,java八股文面试全套真题深度详解(含大厂高频面试真题)】 jdk1.7在hashmap扩容时使用的是头插法,所以扩容…...
MySQL的深度分页如何优化?
大家好,我是锋哥。今天分享关于【MySQL的深度分页如何优化?】面试题。希望对大家有帮助; MySQL的深度分页如何优化? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL在处理深度分页(即查询页数较大时,通常是查询…...
uniapp中使用uCharts折线图X轴数据间隔显示
1、先看官网 https://www.ucharts.cn/ 2、设置代码 "xAxisDemo3":function(val, index, opts){if(index % 2 0){return val}else {return }}, 再在数据中引入设置好样式...
VMware下Linux和macOS安装VSCode一些总结
本文介绍VMware下Linux和macOS安装VSCode的一些内容,包括VSCode编译器显示中文以及安装.NET环境和Python环境。 VSCode下载地址:Download Visual Studio Code - Mac, Linux, Windows 一.Linux系统下 1.安装中文包 按 Ctrl Shift P 打开命令面板。输…...
公司配置内网穿透方法笔记
一、目的 公司内部有局域网,局域网上有ftp服务器,有windows桌面服务器; 在内网环境下,是可以访问ftp服务器以及用远程桌面登录windows桌面服务器的; 现在想居家办公时,也能访问到公司内网的ftp服务器和win…...
【Windows/C++/yolo开发部署02:正确方法】将自定义实例分割模型导出为 ONNX 格式
【完整项目下载地址】: 【TensorRT部署YOLO项目:实例分割+目标检测】+【C++和python两种方式】+【支持linux和windows】资源-CSDN文库 目录 写在前面 环境准备 安装必要的库 下载模型并开始转换 解决依赖问题 安装 ONNX 降级 Protobuf 最终转换 总结 写在前面 在…...
国产编辑器EverEdit - 编辑辅助功能介绍
1 编辑辅助功能 1.1 各编辑辅助选项说明 1.1.1 行号 打开该选项时,在编辑器主窗口左侧显示行号,如下图所示: 1.1.2 文档地图 打开该选项时,在编辑器主窗口右侧靠近垂直滚动条的地方显示代码的缩略图,如下图所示&…...
Jupyter Notebook自动保存失败等问题的解决
一、未生成配置文件 需要在命令行中,执行下面的命令自动生成配置文件 jupyter notebook --generate-config 执行后会在 C:\Users\用户名\.jupyter目录中生成文件 jupyter_notebook_config.py 二、在网页端打开Jupyter Notebook后文件保存失败;运行代码…...
Shapefile格式文件解析和显示
Java实现GIS SHP文件格式的解析和显示,JDK19下编译,awt图形系统显示。 SHP文件对应的属性存储在DBF格式数据库中,解析见:DBASE DBF数据库文件解析_数据库文件在线解析-CSDN博客 解析SHP文件代码: public static Shap…...
大语言模型需要的可观测性数据的关联方式
可观测性数据的关联方式及其优缺点 随着现代分布式架构和微服务的普及,可观测性(Observability)已经成为确保系统健康、排查故障、优化性能的重要组成部分。有效的可观测性数据关联方式不仅能够帮助我们实时监控系统的运行状态,还…...
wordpressAI工具,已接入Deepseek 支持自动生成文章、生成图片、生成长尾关键词、前端AI窗口互动、批量采集等
基于关键词或现有内容生成SEO优化的文章,支持多种AI服务(如OpenAI、百度文心一言、智谱AI等),并提供定时任务、内容采集、关键词生成等功能。 核心功能 文章生成 关键词生成:根据输入的关键词生成高质量文章。 内容…...
解构赋值在 TypeScript 中的妙用:以 Babylon.js 的 loadModel 函数为例
在现代 JavaScript 和 TypeScript 开发中,解构赋值(Destructuring Assignment)是一种非常实用的特性,它能够让代码更加简洁、易读且高效。今天,我们就通过一个实际的例子——在 Babylon.js 中加载 3D 模型的 loadMod…...
mysql8安装时提示-缺少Microsoft Visual C++ 2019 x64 redistributable
MySQL8.0安装包mysql-8.0.1-winx64进行安装,提示:This application requires Visual Studio 2019 x64Redistributable, Please install the Redistributable then runthis installer again。出现这个错误是因为我们电脑缺少Microsoft Visual C 这个程序&…...
物品匹配问题-25寒假牛客C
登录—专业IT笔试面试备考平台_牛客网 这道题看似是在考察位运算,实则考察的是n个物品,每个物品有ai个,最多能够得到多少个物品的配对.观察题目可以得到,只有100,111,010,001(第一位是ci,第二位是ai,第三位是bi)需要进行操作,其它都是已经满足条件的对,可以假设对其中两个不同…...
学习数据结构(6)单链表OJ上
1.移除链表元素 解法一:(我的做法)在遍历的同时移除,代码写法比较复杂 解法二:创建新的链表,遍历原链表,将非val的节点尾插到新链表,注意,如果原链表结尾是val节点需要将…...
03/29 使用 海康SDK 对接时使用的 MysqlUtils
前言 最近朋友的需求, 是需要使用 海康sdk 连接海康设备, 进行数据的获取, 比如 进出车辆, 进出人员 这一部分是 资源比较贫瘠时的一个 Mysql 工具类 测试用例 public class MysqlUtils {public static String MYSQL_HOST "192.168.31.9";public static int MY…...
全志A133 android10 thermal温控策略配置调试
一,功能介绍 Thermal简称热控制系统,其功能是通过temperature sensor(温度传感器)测量当前CPU、GPU等设备的温度值,然后根据此温度值,影响CPU、GPU等设备的调频策略,对CPU、GPU等设备的最大频率…...
知识图谱智能应用系统:数据存储架构与流程解析
在当今数字化时代,知识图谱作为一种强大的知识表示和管理工具,正逐渐成为企业、科研机构以及各类智能应用的核心技术。知识图谱通过将数据转化为结构化的知识网络,不仅能够高效地存储和管理海量信息,还能通过复杂的查询和推理,为用户提供深度的知识洞察。然而,构建一个高…...
mac下生成.icns图标
笔记原因: 今日需要在mac下开发涉及图标文件的使用及icons文件的生成,所以记录一下。 网络上都是一堆命令行需要打印太麻烦了,写一个一键脚本。 步骤一 将需要生成的png格式文件重命名为“pic.png” mv xxxx.png pic.png 步骤二 下载我…...
Dev-cpp C语言编写和调用dll
Dev-cpp新建DLL项目。 dllmain.cpp #include "dll.h" #include <windows.h>int add(int a, int b) { return a b; } dll.h #ifndef _DLL_H_ #define _DLL_H_extern "C" __declspec(dllexport) int add(int a, int b);#endif 调用DLL&#…...
IDEA编写SpringBoot项目时使用Lombok报错“找不到符号”的原因和解决
目录 概述|背景 报错解析 解决方法 IDEA配置解决 Pom配置插件解决 概述|背景 报错发生背景:在SpringBoot项目中引入Lombok依赖并使用后出现"找不到符号"的问题。 本文讨论在上述背景下发生的报错原因和解决办法,如果仅为了解决BUG不论原…...
差速驱动机器人MPC算法实现-C++
差速驱动机器人,其运动学模型需要考虑线速度和角速度。MPC(模型预测控制)需要建立预测模型,并在每个控制周期内求解优化问题。 差速驱动机器人的运动学方程通常包括位置(x, y)和航向角θ,线速度…...
将仓库A分支同步到仓库B分支,并且同步commit提交
一、 问题 有一仓库A 和 一仓库B, 需要将仓库A分支a1所有提交同步推送到仓库B分支b1上 二、 解决 2.1、 首先需要仓库A、仓库B的权限, 2.2、将仓库A clone到本地, 进入A目录,并且切换到a1分支 cd A ## A 为A仓库clone到本地代…...
kafka生产者之发送模式与ACK
文章目录 Kafka的发送模式Kafka的ack机制发送模式与ack的关联重试次数总结 在Kafka中,发送模式与ack机制紧密相关,它们共同影响着消息发送的可靠性和性能。 Kafka的发送模式 发后即忘(Fire and Forget):生产者发送消息…...
C++字符串相关内容
字符串 字符串,本质上是一个接一个字符的一组字符。字母、数字、符号等。 const char* 字符串名 字符后面会有一个空终止符,为0。 字符串从指针的内存地址开始,然后继续下去,直到它碰到0,然后意识到字符串终止了。 …...
Windows Docker笔记-Docker拉取镜像
通过在前面的章节《安装docker》中,了解并安装成功了Docker,本章讲述如何使用Docker拉取镜像。 使用Docker,主要是想要创建并运行Docker容器,而容器又要根据Docker镜像来创建,那么首当其冲,必须要先有一个…...
穷举vs暴搜vs深搜vs回溯vs剪枝系列一>黄金矿工
目录 决策树:代码设计代码: 决策树: 代码设计 代码: class Solution {boolean[][] vis;int ret,m,n;public int getMaximumGold(int[][] grid) {m grid.length;n grid[0].length;vis new boolean[m][n]; for(int i 0; i <…...
07苍穹外卖之redis缓存商品、购物车(redis案例缓存实现)
课程内容 缓存菜品 缓存套餐 添加购物车 查看购物车 清空购物车 功能实现:缓存商品、购物车 效果图: 1. 缓存菜品 1.1 问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压…...
使用DeepSeek的技巧笔记
来源:新年逼自己一把,学会使用DeepSeek R1_哔哩哔哩_bilibili 前言 对于DeepSeek而言,我们不再需要那么多的提示词技巧,但还是要有两个注意点:你需要理解大语言模型的工作原理与局限,这能帮助你更好的知道AI可完成任务…...
