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

4-1-1.C# 数据容器 - List(List 的定义、List 元素的基本操作、List 元素的遍历、List 的常用方法)

List 概述

  1. List<T> 存储的元素是有序的

  2. List<T> 存储的元素是可重复的

  3. List<T> 支持泛型,可以指定存储的元素的类型

  4. List<T> 支持索引,可以通过索引获取或修改元素

  5. List<T> 支持动态大小(有扩容机制),不同于数组的固定大小

  6. List<T> 内部使用数组来存储元素,当数组填满时,会自动分配一个新的、更大的数组,并将现有元素复制到新数组中

  7. List<T> 不是线程安全的,在多线程环境中需要谨慎使用


一、List 的定义

  1. 定义 List
List<int> nums = new List<int>();
List<string> names = new List<string>();
  1. 定义 List 并填充一些元素
List<int> nums = new List<int> { 1, 2, 3 };
List<string> names = new List<string> { "tom", "jack" };

二、List 元素的基本操作

1、List 元素的添加
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);
2、List 元素的访问
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

Console.WriteLine(nums[0]);
Console.WriteLine(nums[1]);
Console.WriteLine(nums[2]);
# 输出结果

1
2
3
3、List 元素的修改
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

Console.WriteLine(nums[0]);
Console.WriteLine(nums[1]);
Console.WriteLine(nums[2]);

nums[0] = 10;
nums[1] = 20;
nums[2] = 30;

Console.WriteLine(nums[0]);
Console.WriteLine(nums[1]);
Console.WriteLine(nums[2]);
# 输出结果

1
2
3
10
20
30

三、List 元素的遍历

1、 使用 for 循环遍历
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

for (int i = 0; i < nums.Count; i++)
{
    Console.WriteLine(nums[i]);
}
# 输出结果

1
2
3
2、使用 foreach 循环遍历
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

foreach (int num in nums)
{
    Console.WriteLine(num);
}
# 输出结果

1
2
3
3、使用 ForEach 方法遍历
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

nums.ForEach(num => Console.WriteLine(num));
# 输出结果

1
2
3

四、List 的常用方法

1、List 元素的删除
  1. List 指定元素删除
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

Console.WriteLine("删除元素之前");

foreach (int num in nums)
{
    Console.WriteLine(num);
}

nums.Remove(2);

Console.WriteLine("删除元素之后");

foreach (int num in nums)
{
    Console.WriteLine(num);
}
# 输出结果

删除元素之前
1
2
3
删除元素之后
1
3
  1. List 指定元素删除,会删除 List 中第一个匹配到的指定元素
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);
nums.Add(2);

Console.WriteLine("删除元素之前");

foreach (int num in nums)
{
    Console.WriteLine(num);
}

nums.Remove(2);

Console.WriteLine("删除元素之后");

foreach (int num in nums)
{
    Console.WriteLine(num);
}
删除元素之前
1
2
3
2
删除元素之后
1
3
2
  1. List 指定索引删除
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

Console.WriteLine("删除元素之前");

foreach (int num in nums)
{
    Console.WriteLine(num);
}

nums.RemoveAt(1);

Console.WriteLine("删除元素之后");

foreach (int num in nums)
{
    Console.WriteLine(num);
}
# 输出结果

删除元素之前
1
2
3
删除元素之后
1
3
2、List 大小的获取
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

Console.WriteLine(nums.Count);
# 输出结果

3
3、List 元素的查找
  1. List 元素的查找,找到则返回元素的索引,找不到则返回 -1
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

Console.WriteLine(nums.IndexOf(1));
Console.WriteLine(nums.IndexOf(10));
# 输出结果

0
-1
  1. List 元素的查找,找到并返回的元素的索引,是第一个匹配到的元素的索引
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);
nums.Add(1);

Console.WriteLine(nums.IndexOf(1));
# 输出结果

0
4、List 元素的清空
List<int> nums = new List<int>();

nums.Add(1);
nums.Add(2);
nums.Add(3);

Console.WriteLine("清空 List 之前");

foreach (int num in nums)
{
    Console.WriteLine(num);
}

nums.Clear();

Console.WriteLine("清空 List 之后");

foreach (int num in nums)
{
    Console.WriteLine(num);
}
# 输出结果

清空 List 之前
1
2
3
清空 List 之后

http://www.kler.cn/a/385961.html

相关文章:

  • Python练习27
  • 微信小程序进行md5加密 ,base64 转码
  • 游戏引擎学习第九天
  • Docker部署Kafka SASL_SSL认证,并集成到Spring Boot
  • 【环境配置】macOS配置jdk与maven
  • 等保测评怎么做?具体流程是什么?
  • 智能出行助手:SpringBoot共享汽车管理平台
  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (三)
  • GBase 8a MPP Cluster V9安装部署
  • TikTok Spark Ads火花广告是什么?如何设置?
  • 图像算法之 OCR 识别算法:原理与应用场景
  • Unity Windows 2023 Release-Notes
  • 软考系统架构设计师论文:论面向对象的建模及应用
  • 聊一聊:今天是记者节,你觉得大模型时代还需要专业的记者与内容吗?
  • 抖音小程序流量主掘金新玩法——看广告娱乐与收益的双赢新机遇
  • MATLAB和Python及R聚类和亚群识别
  • Spring Boot 接口与单元测试
  • RHCE的学习(14)
  • MAN TruckScenes数据集:第一个用于自动驾驶卡车的大规模多模式数据集。
  • ubuntu中apt-get的默认安装路径。安装、卸载以及查看的方法总结
  • vscode使用之vscode-server离线安装
  • TCP连接如何保障数据传输安全
  • 【C++】哈希表模拟:开散列技术与哈希冲突处理
  • 这是一个bug求助帖子--安装kali 遇坑
  • 【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者
  • Stable Diffusion的解读(一)