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。

相关推荐
Nebula_g1 小时前
JavaSE加强:Stream流
java·开发语言·windows·stream·javase·流
小羊没烦恼!2 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#
在角落发呆4 小时前
软件配置备份方法:从手动到自动化的实践指南
windows·安全
UIU1145 小时前
头文件可以防什么错?运用头文件做声明
c++·学习·c#
lingchen19065 小时前
Win 11 系统语言栏悬浮于桌面上影响操作感受,怎么取消?
windows
by209996 小时前
list:迭代器与资源管理实现的综合叙述(下)
数据结构·c++·笔记·list
梅孔立6 小时前
Windows PowerShell 升级 Pi-Coding-Agent + OpenCode,解决 OpenCode 二进制无效报错
windows
东木月8 小时前
Windows C 盘清理指南:安全删除临时文件、缓存与 Prefetch
c语言·windows·安全
水饺编程9 小时前
第1章,[Win32 章节]:Windows 的方方面面
c语言·c++·windows·visual studio
超级大福宝9 小时前
VS Code Remote-SSH 因 RemoteForward 端口冲突导致连接失败的排查与解决
运维·服务器·windows·vscode·ssh