📅  最后修改于: 2023-12-03 15:13:53.381000             🧑  作者: Mango
在C#编程中,经常需要在列表(List)中查找特定的项目(item),这在很多大型项目中都是经常用到的操作。本文将介绍C#中在列表中查找项目的最快方法。
Contains
方法List
类提供了Contains
方法,用于查找列表中是否包含指定的项目。这是最基础、最简单的查找方法。
List<string> list = new List<string>() { "item1", "item2", "item3" };
string itemToFind = "item2";
if (list.Contains(itemToFind))
{
Console.WriteLine($"Found {itemToFind}!");
}
else
{
Console.WriteLine($"Could not find {itemToFind}!");
}
Find
或FindIndex
方法List
类还提供了Find
和FindIndex
方法,用于查找列表中满足指定条件的项目。这两个方法的区别是Find
方法返回满足条件的第一个项目,而FindIndex
方法返回该项目的索引值。
List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
int itemToFind = 3;
int foundItemIndex = list.FindIndex(x => x == itemToFind);
if (foundItemIndex == -1)
{
Console.WriteLine($"Could not find {itemToFind}!");
}
else
{
int foundItem = list[foundItemIndex];
Console.WriteLine($"Found {foundItem} at index {foundItemIndex}!");
}
BinarySearch
方法如果列表是已排序的,则使用BinarySearch
方法可以更快地查找项目。BinarySearch
方法使用二分查找法,在$O(\log n)$的时间内定位该项目的索引值。
List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
int itemToFind = 3;
int foundItemIndex = list.BinarySearch(itemToFind);
if (foundItemIndex < 0)
{
Console.WriteLine($"Could not find {itemToFind}!");
}
else
{
Console.WriteLine($"Found {itemToFind} at index {foundItemIndex}!");
}
需要注意的是,BinarySearch
方法只适用于已排序的列表。如果列表未排序,则需要先使用Sort
方法进行排序。
list.Sort();
本文介绍了在C#中在列表中查找项目的三种方法:Contains
、Find
/FindIndex
和BinarySearch
。其中,BinarySearch
方法是最快的方法,但要求列表已排序。程序员根据需要选择合适的查找方法,以提高效率。