简述 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中元素的实际数目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/57282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Matlab】基于Prandtl−Ishlinskii的迟滞模型-RLS辨识

PI模型 PI迟滞模型的输出公式&#xff1a; 代码记录 此代码为根据PI模型&#xff0c;已知输入&#xff08;正弦函数幅值为3.5&#xff09;、阈值以及权重值&#xff0c;利用matlab生成迟滞回线。 %% The Prandtl-Ishlinskii Hysteresis Model- %% 20241021 clc;clear; close…

数据结构与算法——Java实现 44.翻转二叉树

目录 226. 翻转二叉树 思路 代码 本地代码测试 不管前方的路有多苦 只要走的方向正确 不管多么崎岖不平 都比站在原地更接近幸福 —— 24.10.21 226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输…

Unity AnimationClip详解(2)——动画数据的优化

【内存优化】 首先要意识到运行时和编辑时的区别&#xff0c;当运行时和编辑时所需的数据相差不大时&#xff0c;我们用同一套数据结构即可&#xff0c;当两者差异较多或者数据量很大时&#xff0c;需要有各自的数据结构&#xff0c;这意味着在打包或构建时需要将编辑时数据转…

【Linux探索学习】第七弹——Linux的工具(二):Linux下vim编辑器的使用详解

Linux的工具&#xff08;一&#xff09;&#xff1a;【Linux探索学习】第六弹——Linux的工具&#xff08;一&#xff09;&#xff1a;Ubuntu系统下的软件包管理器_ubuntu软件管理器-CSDN博客 前言&#xff1a; 在学习Linux之前&#xff0c;相信大家都或多或少的学习过一些计算…

微信小程序用开发工具在本地真机调试可以正常访问摄像头,发布了授权后却无法访问摄像头,解决方案

今天开发上线了一个拍照的微信小程序&#xff0c;用uniapp的Vue3开发的&#xff0c;调用的camera组件&#xff0c;相关代码如下&#xff1a; <!-- 微信小程序相机组件 --><view v-if"showCamera" class"camera-container"><camera :device…

青少年孤独症的表现:症状解析,拥抱未来的光明

孤独症&#xff0c;这个听起来就让人心生寒意的名词&#xff0c;却悄然无息地影响着无数青少年的成长之路。它像一层无形的迷雾&#xff0c;笼罩在孩子们的内心世界&#xff0c;让他们难以与外界建立联系&#xff0c;难以表达自己的情感和需求。然而&#xff0c;在这迷雾之中&a…

Adobe Acrobat DC 打印PDF文件,没有打印出注释的解决方法

adobe acrobat在打印的时候&#xff0c;打印不出来注释内容&#xff08;之前一直可以&#xff0c;突然就不行&#xff09;&#xff0c;升级版本、嵌入字体等等都试过&#xff0c;也在Google找了半天和问了GPT也么找着办法。 无奈之下&#xff0c;自己通过印前检查&#xff0c;…

C++游戏开发入门:用 SDL 实现你的第一个 2D 游戏

前言 C 是游戏开发中广泛使用的编程语言&#xff0c;尤其在需要控制底层硬件性能的场景中&#xff0c;如 3D 引擎或实时物理模拟。在这篇文章中&#xff0c;我们将介绍如何使用 SDL&#xff08;Simple DirectMedia Layer&#xff09;进行 C 2D 游戏开发。SDL 是一个轻量级、跨…

免费开源AI助手,颠覆你的数字生活体验

Apt Full作为一款开源且完全免费的软件&#xff0c;除了强大的自然语言处理能力&#xff0c;Apt Full还能够对图像和视频进行一系列复杂的AI增强处理&#xff0c;只需简单几步即可实现专业级的效果。 在图像处理方面&#xff0c;Apt Full提供了一套全面的AI工具&#xff0c;包…

Windows环境下Qt Creator调试模式下qDebug输出中文乱码问题

尝试修改系统的区域设置的方法&#xff1a; 可以修复问题。但会出现其它问题&#xff1a; 比如某些软件打不开&#xff0c;或者一些软件界面的中文显示乱码&#xff01; 暂时没有找到其它更好的办法。

《YOLO目标检测》—— YOLO的简单介绍及Map评估指标

文章目录 一、简单概述二、YOLO中的Map指标1.定义与计算2.应用与意义3.注意事项 一、简单概述 YOLO&#xff08;You Only Look Once&#xff09;是一种目标检测算法&#xff0c;由Redmon等人在2016年提出。它的主要特点是速度快且准确性高&#xff0c;非常适合用于实时目标检测…

windows配置网关与netsh端口转发

在Windows系统中&#xff0c;配置主机的IP地址、子网掩码和网关地址可以通过以下步骤手动设置。这在某些情况下是必要的&#xff0c;例如当你需要确保网络接口使用特定的IP地址或网关时。 手动设置IP地址、子网掩码和网关地址的步骤 打开“网络和Internet设置”&#xff1a; 右…

C# WebApi 接口测试工具:WebApiTestClient应用技术详解

目录 一、引言 二、WebApiTestClient介绍 1、特性 2、应用场景 三、WebApiTestClient具体使用 1、WebApi项目引入组件 2、如何使用组件 1、修改Api.cshtml文件 2、配置读取注释的xml路径 3、测试接口 四、总结 一、引言 由于最近项目需要开发WebApi接口&…

热更新解决方案2 —— Lua语法相关知识点

概述 开发环境搭建 Lua语法 1.第一个Lua程序 2.变量 print("******变量*******"); --lua当中的简单变量类型 -- nil number string boolean -- lua 中所有的变量声明 都不需要声明变量类型 它会自动的判断类型 -- 类似C# 中的var --lua中的一个变量 可以随便赋值 ——…

Java开发中知识点整理

正则表达式 测试网址 Git 分支和主分支有冲突 先checkout origin/分支把origin/master pull进本地分支 修改冲突MergeCommit and Push

旧电脑安装Win11提示“这台电脑当前不满足windows11系统要求”,安装中断。怎么办?

前言 最近有很多小伙伴也获取了LTSC版本的Win11镜像&#xff0c;很大一部分小伙伴安装这个系统也是比较顺利的。 有顺利安装完成的&#xff0c;肯定也有安装不顺利的。这都是很正常的事情&#xff0c;毕竟这个镜像对电脑硬件要求还是挺高的。 有一部分小伙伴在安装Windows11 …

vivado 接口带宽验证

存储器接口 使用赛灵思存储器 IP 时需要更多的 I/O 管脚分配步骤。自定义 IP 之后&#xff0c;您可采用 Vivado IDE 中的细化 (elaborated) 或综 合 (synthesized) 设计分配顶层 IP 端口到物理封装引脚。同每一个存储器 IP 关联的所有端口都被纳入一个 I/O 端口接口…

用Python删除PDF文档页面的页边距

在处理PDF文档时&#xff0c;有时候我们会遇到PDF文件带有较大的页边距的情况。这样过大的页边距不仅浪费了页面空间&#xff0c;而且在打印或电子阅读时也可能影响用户体验。通过删除这些不必要的页边距&#xff0c;我们可以更有效地利用页面区域&#xff0c;使得内容更加紧凑…

实现vlan间的通信

方法一&#xff1a;单臂路由 概述 单臂路由是一种网络配置&#xff0c;它允许在路由器的一个物理接口上通过配置多个子接口来处理不同VLAN的流量&#xff0c;从而实现VLAN间的通信。 原理 路由器重新封装MAC地址&#xff0c;转换Vlan标签 基础模型 1、配置交换机的链…

系统工程生命周期

系统工程生命周期阶段 系统工程生命周期&#xff08;System Engineering Life Cycle, SELC&#xff09;是指从系统的概念形成到最终退出使用的整个过程。这个过程可以分为不同的阶段&#xff0c;每个阶段都有其特定的目标和活动。 探索性研究&#xff1a;在这个初始阶段&…