C#,入门教程(20)——列表(List)的基础知识
上一篇:
C#,入门教程(19)——循环语句(for,while,foreach)的基础知识https://blog.csdn.net/beijinghorn/article/details/124060844
List顾名思义就是数据列表,区别于数据数组(array)。
List比数组提供强大得多!多!多!多!的功能,能存储更多!多!多!类型的数据(泛型)!
List是更多数据集合(序表SortedList、链表LinkedList、堆栈Stack、队列Quene及哈希表Hashtable等)的基础。
因而,可以说:无列表,不编程!
一、命名空间
using System.Text;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
如果代码提示错误信息,先添加上面的这些命名空间。
if (入门 List )
{本文就够了。
}
else if (想精通 List )
{请掌握 Linq 与 Lamda 表达式的基础知识。
}
else
{关注我!无穷知识传给你!
}
二、List的声明(定义)
1、List声明
语法:
List<T> tList = new List<T>();
注:<T>即为泛型,可以理解为任意的数据类型(数值、类、结构体、object及其他数据体)。
实例:
List<string> stringList = new List<string>();
List<Classmate>classmateList = new List<Classmate>();
2、List初值
可以在声明一个List的同时,给出初值。
List<string> stringList = new List<string>() { "Tom", "Jerry", "!"
};
List<Classmate> classmateList = new List<Classmate>() {new Classmate("1", "Tom"), new Classmate("2", "Jerry")
};
3、数组array转为List
语法:
List<T> tList =new List<T> (数据集);
实例:
string[] stringArray = { "Tom", "Jerry", "!"
};
List<string> stringList = new List<string>(stringArray);
//或者(Linq方法):
List<string> stringList = stringArray.ToList();
//反之:
string[] stringArray = stringList.ToArray();
三、List的基础功能与常用操作
1、List的数据总数
语法:int List.Count()
实例:int count = stringList.Count();
2、清空List
语法:void List.Clear()
实例:stringList.Clear();
必要的时候清空列表是好习惯!
3、List的遍历
语法:
// T的类型与mList声明时一样
string result = "";
foreach (T element in tList)
{result += element.ToString();
}
实例(制作同学花名册):
List<Classmate> classmateList = new List<Classmate>();
//(因个人隐私需要,此处又省略。。。)
StringBuilder sb = new StringBuilder();
sb.AppendLine("<table>");
sb.AppendLine("<tr>");
sb.AppendLine("<td>序号</td>");
sb.AppendLine("<td>昵称</td>");
sb.AppendLine("<td>姓名</td>");
sb.AppendLine("<td>手机号</td>");
sb.AppendLine("<td>邮箱</td>");
sb.AppendLine("</tr>");
foreach (Classmate mo in classmateList)
{sb.AppendLine("<tr>");sb.AppendLine("<td>" + mo.Id + "</td>");sb.AppendLine("<td>" + mo.Nickname + "</td>");sb.AppendLine("<td>" + mo.Name + "</td>");sb.AppendLine("<td>" + mo.Mobile + "</td>");sb.AppendLine("<td>" + mo.Email + "</td>");sb.AppendLine("</tr>");
}
sb.AppendLine("</table>");
4、添加一个或一组数据
语法:List.Add(T item)
语法:List.AddRange(数据集合)
注意:狗尾续貂,数据添加在尾部;
实例:
List<string> stringList = new List<string>();
stringList.Add("Tom");//或:
string[] stringArray = { "Tom", "Jerry", "!"
};
List<string> firstStringList = new List<string>();
firstStringList.AddRange(stringArray);//又或:
List<string> secondStringList = new List<string>();
//(此处可能省略几句话。。。)
stringList.AddRange(secondStringList);
5、按指定位置添加数据
语法: Insert(int index, T item);
实例:
List<string> stringList = new List<string>();
stringList.Insert(1, "House");
6、删除元素
① 按数据删除
语法:List.Remove(T item)
② 按位置删除
语法:List.RemoveAt(int index);
③ 批量删除
语法:List.RemoveRange(int index, int count);
④ 按条件删除
语法:List.RemoveAll(Predicate<T> match)
方法:删除满足条件的所有元素。
实例:
stringList.Remove("Tom");
stringList.RemoveAt(0);
stringList.RemoveRange(1, 2);
//(Lamda表达式)
stringList.RemoveAll(t => t.Id > 10);
7、判断List是否包含某个数据?
语法:List.Contains(T item)
返回:true 或 false
实例:
string result = "";
if (mList.Contains("Tom"))
{
result = "Tom is in the list";
}
else
{
result = "Tom is not in the list";
}
四、List的高级应用
1、List排序
语法:List.Sort()
按数据的默认升序排序;
stringList.Sort();
这个实际上没有什么用处,强烈推荐下面的语法:
语法:
tList.Sort(delegate(T a, T b) {
return Comparer<long>.Default.Compare(a.Hashcode(), b.Hashcode());
});
实例(正序):
classmateList.Sort(delegate(Classmate a, Classmate b)) {if(a.Id > b.Id) {return 1;}else {return -1;}
});
//实例(倒序):
classmateList.Sort(delegate(Classmate a, Classmate b)) {if(b.Id > a.Id) {return 1;}else {return -1;}
});
//实例(倒序,简约写法):
classmateList.Sort(delegate(Classmate a, Classmate b)) {return ((b.Id > a.Id) ? 1 : -1);
});
//或者,实例(倒序,简约写法):
classmateList.Sort(delegate(Classmate a, Classmate b)) {return Comparer<int>.Default.Compare(b.Id, a.Id);
});
列表的排序是使用频率非常高的功能,应该熟练掌握!
2、List反转
语法:List.Reverse()
3、List检索与批量检索
① List.Find方法:检索满足条件的第一个元素;
语法:public List<T> Find(Predicate<T> match);
② List.FindAll方法:检索满足条件的所有元素;
语法:public List<T> FindAll(Predicate<T> match);
③ List.Where方法:检索满足条件的所有元素;(类似FindAll)。
语法:public List<T> Where(Predicate<T> match);
④ List.FindLast 方法:检索满足条件的最后一个元素;
语法:public T FindLast(Predicate<T> match);
实例(推荐使用Lamda表达式):
List<Classmate> someClassmateList = classmateList.Find(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.FindAll(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.Where(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.FindLast(t => t.Mobile.StartsWith("139"));
4、List的片段提取
语法:List.Take(int number);
方法:获得前number个数据,构成一个数据子集;
List<Classmate> top3List = classmateList.Take(3);
一般先排序,再提取!
——————————————————————
POWER BY 315SOFT.COM &
TRUFFER.CN
下一篇:
C#,入门教程(21)——命名空间(namespace)与程序结构的基础知识https://blog.csdn.net/beijinghorn/article/details/124140653
相关文章:

C#,入门教程(20)——列表(List)的基础知识
上一篇: C#,入门教程(19)——循环语句(for,while,foreach)的基础知识https://blog.csdn.net/beijinghorn/article/details/124060844 List顾名思义就是数据列表,区别于数据数组(arr…...

【蓝桥杯日记】复盘篇一:深入浅出顺序结构
🚀前言 本期是一篇关于顺序结构的题目的复盘,通过复盘基础知识,进而把基础知识学习牢固!通过例题而进行复习基础知识。 🚩目录 前言 1.字符三角形 分析: 知识点: 代码如下 2. 字母转换 题目分析: 知…...

尚无忧【无人共享空间 saas 系统源码】无人共享棋牌室系统源码共享自习室系统源码,共享茶室系统源码
可saas多开,非常方便,大大降低了上线成本 UNIAPPthinkphpmysql 独立开源! 1、定位功能:可定位附近是否有店 2、能通过关键字搜索现有的店铺 3、个性轮播图展示,系统公告消息提醒 4、个性化功能展示,智能…...

SQL Server 恢复软件
Datanumen SQL Server 软件主要特点 支持 Microsoft SQL Server 2005、2008、2008 R2、2012、2014、2016、2017、2019、2022 。 恢复表中的架构/结构和数据。 恢复所有数据类型,包括 ASCII 和 Unicode XML 数据类型。 恢复稀疏列。 恢复数据库表中已删除的记录…...

奇安信天擎 rptsvr 任意文件上传漏洞复现
0x01 产品简介 奇安信天擎是奇安信集团旗下一款致力于一体化终端安全解决方案的终端安全管理系统(简称“天擎”)产品。通过“体系化防御、数字化运营”方法,帮助政企客户准确识别、保护和监管终端,并确保这些终端在任何时候都能可信、安全、合规地访问数据和业务。天擎基于…...

Linux-nginx(安装配置nginx、配置反向代理、Nginx配置负载均衡、动静分离)
关于代理 正向代理: 客户明确知道自己访问的网站是什么 隐藏客户端的信息 目录 关于代理 一、Nginx的安装与配置 1、安装依赖 2、安装nginx (1)上传压缩包到目录 /usr/nginx里面 (2)解压文件 (3)…...

阿里云GPU服务器ECS实例规格详细说明
阿里云GPU服务器提供GPU加速计算能力,GPU卡支持A100、V100、T4、P4、P100、A10等,NVIDIA V100,GPU实例规格是什么意思?如搭载NVIDIA V100的ecs.gn6v-c8g1.2xlarge、A10卡ecs.gn7i-c32g1.8xlarge、T4卡ecs.gn6i-c4g1.xlarge、P4卡e…...

Kafka为什么在消息积压时不能直接通过消费者水平扩容来提升消费速度?
我们知道当消息生产者生产的速度快于消费者的消费速度时,会产生大量的消息积压,大多数人的想法是增加消费者的数量来提升消费速度,这个想法在RocketMQ中是可行的,但是在Kafka中不一定可行。为了更方便地分析问题,我们先…...

“揭秘Maven:如何成为大数据项目的管理能手?“
介绍:Maven是一个项目管理和构建自动化工具,广泛应用于Java项目中。具体来说:项目对象模型(POM):Maven通过一个名为POM的模型来描述项目信息,包括项目的坐标、依赖关系、插件目标等。这个模型通…...

基于BERT对中文邮件内容分类
用BERT做中文邮件内容分类 项目背景与意义项目思路数据集介绍环境配置数据加载与预处理自定义数据集模型训练加载BERT预训练模型开始训练 预测效果 项目背景与意义 本文是《用BERT做中文邮件内容分类》系列的第二篇,该系列项目持续更新中。系列的起源是《使用Paddl…...

【EFCore仓储模式】介绍一个EFCore的Repository实现
阅读本文你的收获 了解仓储模式及泛型仓储的优点学会封装泛型仓储的一般设计思路学习在ASP.NET Core WebAPI项目中使用EntityFrameworkCore.Data.Repository 本文中的案例是微软EntityFrameworkCore的一个仓储模式实现,这个仓储库不是我自己写的,而是使…...

oracle篇—19c新特性自动索引介绍
☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…...

稳定性——JE流程
1. RuntimeInit.commonInit() 上层应用都是由Zygote fork孵化出来的,分为system_server进程和普通应用进程进程创建之初会设置未捕获异常的处理器,当系统抛出未捕获的异常时候都会交给异常处理器RuntimeInit.java的commonInit方法设置UncaughtHandler …...
【控制篇 / 分流】(7.4) ❀ 03. 对国内和国际IP网段访问进行分流 ❀ FortiGate 防火墙
【简介】公司有两条宽带用来上网,一条电信,一条IPLS国际专线,由于IPLS仅有2M,且价格昂贵,领导要求,访问国内IP走电信,国际IP走IPLS,那么应该怎么做? 国内IP地址组 我们已…...

01-开始Rust之旅
上一篇:00-Rust前言 1. 下载Rust 官方推荐使用 rustup 下载 Rust,这是一个管理 Rust 版本和相关工具的命令行工具。下载时需要连接互联网。 这边提供了离线安装版本。本人学习的机器环境为: ubuntu x86_64,因此选用第②个工具链&a…...

华南理工大学数字信号处理实验实验一(薛y老师版本)matlab源码
一、实验目的 1、加深对离散信号频谱分析的理解; 2、分析不同加窗长度对信号频谱的影响; 3、理解频率分辨率的概念,并分析其对频谱的 影响; 4、窗长和补零对DFT的影响 实验源码: 第一题: % 定义离散信…...

一篇文章看懂云渲染,云渲染是什么?云渲染如何计费?云渲染怎么选择
云渲染是近年兴起的新行业,很多初学者对它不是很了解,云渲染是什么?为什么要选择云渲染?它是如何计费的又怎么选择?这篇文章我们就带大家了解下吧。 云渲染是什么 云渲染简单来说就是把本地的渲染工作迁移到云端进行的…...

C++进阶--哈希表模拟实现unordered_set和unordered_map
哈希表模拟实现unordered_set和unordered_map 一、定义哈希表的结点结构二、定义哈希表的迭代器三、定义哈希表的结构3.1 begin()和end()的实现3.2 默认成员函数的实现3.2.1 构造函数的实现3.2.2 拷贝构造函数的实现(深拷贝)3.2.3 赋值运算符重载函数的实…...

Elasticsearch各种高级文档操作
本文来记录下Elasticsearch各种文档操作 文章目录 初始化文档数据查询所有文档匹配查询文档关键字精确查询文档多关键字精确查询文档字段匹配查询文档指定查询字段查询文档过滤字段查询文档概述指定想要显示的字段示例指定不想要显示的字段示例 组合查询文档范围查询文档概述使…...

激光无人机打击系统——光束控制和指向系统
激光无人机(UAV)打击系统中的光束控制和指向系统通常包括以下几个关键组件和技术: 激光发射器:这是系统的核心,负责生成高能量的激光束。常用的激光类型包括固体激光器、化学激光器、光纤激光器等,选择取决…...

pycharm import torch
目录 1 安装 2 conda环境配置 3 测试 开始学习Pytorch! 1 安装 我的电脑 Windows 11 Python 3.11 Anaconda3-2023.09-0-Windows-x86_64.exe cuda_11.8.0_522.06_windows.exe pytorch (管理员命令行安装) pycharm-community-2023.3.2.exe 2 c…...

flask 与小程序 购物车删除和编辑库存功能
编辑 : 数量加减 价格汇总 数据清空 mina/pages/cart/index.wxml <!--index.wxml--> <view class"container"><view class"title-box" wx:if"{{ !list.length }}">购物车空空如也~</view>…...

蓝桥杯真题(Python)每日练Day3
题目 题目分析 为了找到满足条件的放置方法,可以带入总盘数为2和3的情景,用递归做法实现。 2. A中存在1 2两个盘,为了实现最少次数放入C且上小下大,先将1放入B,再将2放入C,最后将1放入C即可。同理当A中存在…...

结构体大揭秘:代码中的时尚之选(上)
目录 结构结构的声明结构成员的类型结构体变量的定义和初始化结构体成员的访问结构体传参 结构 结构是一些值的集合,这些值被称为成员变量。之前说过数组是相同类型元素的集合。结构的每个成员可以是不同类型的变量,当然也可以是相同类型的。 我们在生活…...

【unity学习笔记】语音驱动blendershape
1.导入插件 https://assetstore.unity.com/packages/tools/animation/salsa-lipsync-suite-148442 1.选择小人,点击添加组件 分别加入组件: SALSA EmoteR Eyes Queue Processor(必须加此脚本):控制前三个组件的脚本。…...

docker常用基础命令
文章目录 1、Docker 环境信息命令1.1、docker info1.2、docker version 2、系统日志信息常用命令2.1、docker events2.2、docker logs2.3、docker history 3、容器的生命周期管理命令3.1、docker create3.2、docker run 总结 1、Docker 环境信息命令 1.1、docker info 显示 D…...

自动驾驶中的坐标系
自动驾驶中的坐标系 自动驾驶中的坐标系 0.引言1.相机传感器坐标系2.激光雷达坐标系3.车体坐标系4.世界坐标系4.1.地理坐标系4.2.投影坐标系4.2.1.投影方式4.2.2.墨卡托(Mercator)投影4.2.3.高斯-克吕格(Gauss-Kruger)投影4.2.4.通用横轴墨卡托UTM(UniversalTransve…...

js数组的截取和合并
在JavaScript中,你可以使用slice()方法来截取数组,使用concat()方法来合并数组。 截取数组 slice()方法返回一个新的数组对象,这个对象是一个由原数组的一部分浅复制而来。它接受两个参数,第一个参数是开始截取的位置(…...

2024美赛数学建模思路 - 案例:感知机原理剖析及实现
文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其…...

大中台,小前台:打造快速响应市场的企业竞争力
2015年,大家都听过“大中台、小前台”战略,听上去很牛。“大中台、小前台”背后完成了一件事情:把阿里巴巴和支付宝所有的基础技术全部统一到阿里云上,这是个重大的技术变革。为了完成这个技术变革,阿里巴巴做了非常好…...