C# List<T>的Contains、Exists、Any、Where性能对比

1、Contains方法

Contains方法的作用是检查List中是否包含指定元素,其代码实现如下

List<string> list = new List<string>() { "a", "b", "c", "d" };

bool isExists = list.Contains("a");

Contains方法的执行时间非常短,一般在1毫秒以下。因为该方法使用了二分查找算法,在大多数情况下,找到指定元素只需要遍历集合的一半即可,所以执行速度非常快。

2、Exists方法

Exists方法是一个实例方法,可以使用委托作为它的参数来查找元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };

bool isExists = list.Exists(x => x == "a");

由于Exists方法的参数是一个委托,所以其执行时间比Contains方法要长。但是,当集合中元素比较多且查找条件复杂时,Exists方法的执行时间可能比Contains方法更短。

3、Any方法

Any方法用于判断集合中是否存在满足指定条件的元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };

bool isExists = list.Any(x => x == "a");

Any方法的执行时间与Exists方法相当,因为它们两个的代码实现方式都是一样的。

4、Where方法

Where方法用于筛选符合指定条件的元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };

var result = list.Where(x => x == "a");

Where方法的返回值是一个IEnumerable,因为它只是筛选符合指定条件的元素,而并没有直接返回元素本身。由于Where方法是延迟求值的,所以需要使用foreach等方式来获取其返回值。

由于Where方法返回的是延迟求值的IEnumerable,其执行时间比其他方法要长一些。但是,如果需要对集合进行复杂的筛选操作时,Where方法是一个非常好用的API。

相关推荐
心平气和量大福大3 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
白露与泡影3 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#
王维同学5 小时前
[原创][Windows C++]LSA 认证、安全与通知包的注册表枚举
c++·windows·安全
YCOSA20255 小时前
雨晨 Windows 11 IOT 企业版 LTSC 24H2 轻装 2合1 26100.8968
windows·物联网
汤姆yu6 小时前
CodeGeeX 4完整安装与实操使用全指南
人工智能·windows·ai·智能体·视频模型
EIP低代码平台8 小时前
EIP低代码平台系统-字典功能讲解
低代码·c#·工作流
吐了啊取名字太难8 小时前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程
吉普赛的歌9 小时前
YARP负载均衡配置了多个相同接口导致的报错
c#·yarp
绝世番茄10 小时前
HarmonyOS List 上拉加载更多(LoadMore)深度实战指南
华为·list·harmonyos·鸿蒙
张人玉10 小时前
C# WinForms——工厂管理系统(C# WinForms)
数据库·sqlite·c#·winform