当前位置: 首页 > news >正文

简述 C# 二维数据集合 List 的创建、遍历、修改、输出

简述 C# 二维数据集合 List 的创建、遍历、修改、输出

  • 1、为什么要使用列表 List
  • 2、引入命名空间
  • 3、声明一维列表 List
  • 4、声明创建一个二维列表 List,数据类型 int
  • 5、 简单访问元素
  • 6、遍历二维列表,控制台输出
  • 7、遍历二维列表,修改数据,控制台输出,采用 Join 输出行数据
  • 8、删除列表行,索引默认从零开始
  • 9、删除集合中一定范围内的元素,索引默认从零开始
  • 10、在列表索引前插入元素
  • 11、List的方法和属性、方法或属性作用

1、为什么要使用列表 List

  • 当我们有很多类型一样的数据时,可以使用数组来进行存储并管理,但是数组的缺点:C# 数组的大小必须提前给定的、是固定的,不像 VB 数组可以自由按量变化。 如果我们有许多数据类型一样,但数量不定的数据,当获取的数据数量超过数组定义,数组将发生数据溢出错误,这时候可以使用集合类来进行管理——例如列表 List。我们可以使用列表 List 很方便的添加数据,删除数据以及其他的一些数据操作,便于方便数据操作,List 操作比数组更加灵活。List 类是 ArrayList 类的泛型等效类,该类使用大小可按需动态增加的数组实现 IList 泛型接口。

  • 泛型的好处:它为使用 C# 语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。

  • 性能注意事项:在决定使用 IList 还是使用 ArrayList 类(两者具有类似的功能)时,记住 IList 类在大多数情况下执行得更好并且是类型安全的。如果对 IList 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。

2、引入命名空间

  using System; using System.Collections.Generic;

3、声明一维列表 List

 List<T> mList = new List<T>();  

T 为列表中元素类型,即数据类型。

4、声明创建一个二维列表 List,数据类型 int

            //声明新的二维列表 List:twoDimensionalListList<List<int>> twoDimensionalList = new List<List<int>>();// 初始化二维列表 List ,添加 3 行 4 列twoDimensionalList.Add(new List<int> { 1, 2, 3, 4 });//添加一维 List 元素twoDimensionalList.Add(new List<int> { 5, 6, 7, 8 });twoDimensionalList.Add(new List<int> { 9, 10, 11, 12 });

5、 简单访问元素

 int element = twoDimensionalList[0][1]; // 获取第一行第二个元素,值为2Console.WriteLine(element);Console.WriteLine();      

A 输出:2

6、遍历二维列表,控制台输出

            // 获取二维列表行数int rowCount = twoDimensionalList.Count;// 获取二维列表列数int columnCount = twoDimensionalList.Count == 0 ? 0 : twoDimensionalList[0].Count;//遍历二维列表,控制台输出foreach (List<int> row in twoDimensionalList){foreach (int item in row){Console.Write(item + " ");//控制台调试显示数据}Console.WriteLine();}Console.WriteLine();

B 输出:
1 2 3 4
5 6 7 8
9 10 11 12

7、遍历二维列表,修改数据,控制台输出,采用 Join 输出行数据

            for (int i = 0; i < rowCount; i++){for (int j = 0; j < columnCount; j++){twoDimensionalList[i][j] += 1;//修改数据,二维数据每个数加 1}}//遍历二维列表,控制台输出,采用 Join 输出行数据foreach (var row in twoDimensionalList) { Console.WriteLine(string.Join(" ", row)); }

C 输出:
2 3 4 5 //索引为 0
6 7 8 9 //索引为 1
10 11 12 13 //索引为 2

8、删除列表行,索引默认从零开始

数据继 C 输出:

twoDimensionalList.RemoveAt(2);//删除索引 2 的行数据

输出:
2 3 4 5
6 7 8 9

9、删除集合中一定范围内的元素,索引默认从零开始

数据继 C 输出:

twoDimensionalList.RemoveRange(0, 2);//从索引 0 开始,删除 2 行数据

输出:
10 11 12 13

10、在列表索引前插入元素

数据继 C 输出:

 twoDimensionalList.Insert(1, new List<int> { 15, 16, 17, 18 });

输出:
2 3 4 5
15 16 17 18
6 7 8 9
10 11 12 13

11、List的方法和属性、方法或属性作用

List 的方法和属性在二维数组中同样可以操作,先从一维 List 数据处理开始学习吧 😁😁😁

  • Capacity 用于获取或设置 List 可容纳元素的数量。当数量超过容量时,这个值会自动增长。可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。
  • Count 属性,用于获取数组中当前元素数量
  • Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。
  • Add( ) 在List中添加一个对象的公有方法
  • AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素
  • BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.
  • Clear( ) 在List内移除所有元素
  • Contains( ) 测试一个元素是否在List内
  • CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内
  • Exists( ) 测试一个元素是否在List内
  • Find( ) 查找并返回List内的出现的第一个匹配元素
  • FindAll( ) 查找并返回List内的所有匹配元素
  • GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器
  • Getrange( ) 拷贝指定范围的元素到新的List内
  • IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引
  • Insert( ) 在List内插入一个元素
  • InsertRange( ) 在List内插入一组元素
  • LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引
  • Remove( ) 移除与指定元素匹配的第一个元素
  • RemoveAt( ) 移除指定索引的元素
  • RemoveRange( ) 移除指定范围的元素
  • Reverse( ) 反转List内元素的顺序
  • Sort( ) 对List内的元素进行排序
  • ToArray( ) 把List内的元素拷贝到一个新的数组内
  • trimToSize( ) 将容量设置为List中元素的实际数目

相关文章:

简述 C# 二维数据集合 List 的创建、遍历、修改、输出

简述 C# 二维数据集合 List 的创建、遍历、修改、输出 1、为什么要使用列表 List2、引入命名空间3、声明一维列表 List4、声明创建一个二维列表 List&#xff0c;数据类型 int5、 简单访问元素6、遍历二维列表&#xff0c;控制台输出7、遍历二维列表&#xff0c;修改数据&#…...

ps2024 一键安装教程 永久使用!

下载后&#xff0c;直接解压打开exe文件就能安装了 下载: https://pan.baidu.com/s/1uDSug00prwRw5igF0N-Xhw?pwd8888 【软件名称】:ps2024 【软件大小】:4.7g 【软件版本】:25.12.0.806 【软件简介】:Photoshop&#xff0c;简称“PS”&#xff0c;是由美国Adobe公司推出…...

ScrollView 真机微信小程序无法隐藏滚动条

问题描述 根据官方文档&#xff0c;使用:show-scrollbar"false"&#xff0c;隐藏滚动条无效 解决方法 添加一段样式在 scroll-view 上或者父级节点上下 ::-webkit-scrollbar {width: 0;height: 0;color: transparent;display: none;} eg. .inforDetails_app {p…...

【日志】编辑器开发——修复根据Excel表格数据生成Json文件和配置表代码报错

2024.10.15 又是蕉绿且摆烂的一天&#xff0c;不仅需要克制网瘾&#xff0c;还要努力学习&#xff0c;不然真的会被抛弃啊。但是我还是不想卷&#xff0c;给我的时间大概还有半年&#xff0c;突然好奇半年时间到底能学点什么或者做点什么。 【力扣刷题】 暂无 【数据结构】 …...

C#线性查找算法

前言 线性查找算法是一种简单的查找算法&#xff0c;用于在一个数组或列表中查找一个特定的元素。它从数组的第一个元素开始&#xff0c;逐个检查每个元素&#xff0c;直到找到所需的元素或搜索完整个数组。线性查找的时间复杂度为O(n)&#xff0c;其中n是数组中的元素数量。 …...

GPT+Python)近红外光谱数据分析与定性/定量建模技巧

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年4月&#xff0c;更强版本的ChatGPT4.0上线&#xff0c;文本、语音、图像等多模态交互方式使其在…...

Spark动态资源释放机制 详解

Apache Spark 是一个分布式数据处理框架&#xff0c;其动态资源分配&#xff08;或称为动态资源释放&#xff09;机制&#xff0c;是为了更高效地利用集群资源&#xff0c;尤其是在执行具有不同工作负载的作业时。Spark 的动态资源释放机制允许它根据作业的需求自动分配和释放集…...

基于径向基神经网络(RBF)的构网型VSG自适应惯量控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 逆变器虚拟同步发电机控制和核心控制参数就是虚拟惯量与虚拟阻尼&#xff0c;目前的文献中已有众多论文对VSG的虚拟参数展开了研究&#xff0c;但是百分之90都是采用构造函数的方法&#xff0c;使用…...

简单汇编教程9 字符串与字符串指令

目录 字符串的指令 movs 字符串传送 lods, stos使用 cmpsb的使用 SCASB的使用 字符串你很熟悉了&#xff0c;我们定义了无数次了&#xff01; %macro ANNOUNCE_STRING 2%1 db %2%1_LEN equ $ - %1 %endmacro 当然&#xff0c;我们现在来学习一个比较新的定义方式&#xf…...

Taro构建的H5页面路由切换返回上一页存在白屏页面过渡

目录 项目背景&#xff1a;Taro与Hybrid开发问题描述&#xff1a;白屏现象可能的原因包括&#xff1a; 解决方案解决后的效果图 其他优化方案可参考&#xff1a; 项目背景&#xff1a;Taro与Hybrid开发 项目使用Taro框架同时开发微信小程序和H5页面&#xff0c;其中H5页面被嵌…...

【学习笔记】网络设备(华为交换机)基础知识 9 —— 堆叠配置

提示&#xff1a;学习华为交换机堆叠配置&#xff0c;含堆叠的概念、功能、角色、ID和优先级&#xff1b;堆叠的建立过程以及注意事项&#xff1b;包含堆叠的配置命令&#xff0c;以及堆叠的配置案例 一、前期准备 1.已经可以正常访问交换机的命令行接口 Console口本地访问教…...

jeston编译配置cuda加速版opencv

1.源码下载连接 opencv&#xff1a;Releases - OpenCV opencv-contrib&#xff1a; https://github.com/opencv/opencv_contrib 建议不要下最新版本 一般我会下4.5.4 // 4.5.6 // 4.6.0 opencv和opencv-contrib版本要对齐 将下好的opencv和opencv-contrib解压 将opencv-c…...

ApacheShiro反序列化 550 721漏洞

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理个漏洞被称为 Shiro550 是因为在Apache Shiro的GitHub问题跟踪器中&#xff0c;该漏洞最初被标记为第550个问题,721漏洞名称也是由此而来 Shiro-550 CVE-2016-4437 Shiro反序列化Docker复现 …...

Github + 自定义域名搭建个人静态站点

Github 自定义域名搭建个人静态站点 使用 Github 部署一个自己的免费站点给你的站点添加上自定义域名 本文基于腾讯云基于二级域名, 作用于 Github 实现自定义域名站点 使用 Github 部署一个自己的免费站点 首先你得有一个 Github 账号, 没有就去注册一个,网上有教程,本文跳…...

使用OpenCV进行视频边缘检测:案例Python版江南style

1. 引言 本文将演示如何使用OpenCV库对视频中的每一帧进行边缘检测&#xff0c;并将结果保存为新的视频文件。边缘检测是一种图像处理技术&#xff0c;它可以帮助我们识别出图像中不同区域之间的边界。在计算机视觉领域&#xff0c;这项技术有着广泛的应用&#xff0c;比如物体…...

DataWhale10月动手实践——Bot应用开发task04学习笔记

一、图像流 1. 什么是图像流&#xff1f; 图像流是一种直观的图像处理流程工具&#xff0c;用户可以灵活组合各类图像处理模块。该系统将不同的图像处理工具模块化&#xff0c;并通过可视化界面&#xff0c;将这些模块以拖拽方式组合&#xff0c;构建完整的处理流程。用户可以…...

关于 IntelliJ IDEA 2024 安装使用

补丁文件...

React是如何工作的?

从编写组件到最后屏幕生成界面&#xff0c;如上图所示&#xff0c;我们现在需要知道的就是后面几步是如何运行的。 概述 这张图解释了 React 渲染过程的几个阶段&#xff1a; 渲染触发&#xff1a;通过更新某处的状态来触发渲染。渲染阶段&#xff1a;React 调用组件函数&…...

llama.cpp 去掉打印,只显示推理结果

llama.cpp 去掉打印&#xff0c;只显示推理结果 1 llama.cpp/common/log.h #define LOG_INF(...) LOG_TMPL(GGML_LOG_LEVEL_INFO, 0, __VA_ARGS__) #define LOG_WRN(...) LOG_TMPL(GGML_LOG_LEVEL_WARN, 0, __VA_ARGS__) #define LOG_ERR(…...

Word、PDF转换为图片Java

Word、PDF转换为图片Java 需求要在小程序端展示文档内容&#xff0c;所以将文档每页转换为图片后显示 参考和其他等方案&#xff1a; https://blog.csdn.net/strggle_bin/article/details/140599514 https://www.modb.pro/db/566986 https://blog.csdn.net/spring_is_comin…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...