List<T>对元素的查找。
2014-07-10 19:44
232 查看
要在List<T>中查找特定的元素,可以使用Contains() 、IndexOf()、LastIndexOf()和BinarySearch()方法。除了
LastIndexOf()是从最后一个元素开始以外,其他的都是从第一个元素开始搜索,检查每一个元素,直到发现目标元素。集合类不要求集合中所有的元素都是唯一的。假如集合中有两个或者多个元素相同。则IndexOf()返回的是第一个索引。LastIndexOf()返回的是最后一个索引。
BinarySearch()采用的是快得多的二分搜索算法,但它要求元素已经排好序了。
BinarySearch()有一个有用的功能室假如元素没有找到,它会返回一个负整数。该值按位取反的(~)的结果是“大于被查找元素的下一个元素”的索引,假如没有更大的值,则是元素的整数,这样一来,就可以在列表的特定位置方便的插入新值,同时还保持已排序状态。
int search;
List<string> list = new List<string>() { "public","private","protected"};
list.Sort(); //使用BinarySearch()之前要先排序
search = list.BinarySearch("protected internal");
if (search < 0)
{
list.Insert(~search, "protected internal"); //search按位取反后,就是要插入元素应该在的位置
}
foreach (string item in list) //遍历输出
Console.WriteLine(item);
Console.ReadKey();
结果是:
LastIndexOf()是从最后一个元素开始以外,其他的都是从第一个元素开始搜索,检查每一个元素,直到发现目标元素。集合类不要求集合中所有的元素都是唯一的。假如集合中有两个或者多个元素相同。则IndexOf()返回的是第一个索引。LastIndexOf()返回的是最后一个索引。
BinarySearch()采用的是快得多的二分搜索算法,但它要求元素已经排好序了。
BinarySearch()有一个有用的功能室假如元素没有找到,它会返回一个负整数。该值按位取反的(~)的结果是“大于被查找元素的下一个元素”的索引,假如没有更大的值,则是元素的整数,这样一来,就可以在列表的特定位置方便的插入新值,同时还保持已排序状态。
int search;
List<string> list = new List<string>() { "public","private","protected"};
list.Sort(); //使用BinarySearch()之前要先排序
search = list.BinarySearch("protected internal");
if (search < 0)
{
list.Insert(~search, "protected internal"); //search按位取反后,就是要插入元素应该在的位置
}
foreach (string item in list) //遍历输出
Console.WriteLine(item);
Console.ReadKey();
结果是:
相关文章推荐
- 编写程序,查找并删除forward_list<int>中的奇数元素
- //编写程序判断一个vector<int>容器所包含的元素是否与一个list<int>容器的完全相同
- List<T>采用delegate快速实现排序、查找等操作
- List<T>采用delegate快速实现排序、查找等操作
- ForEach :对 System.Collections.Generic.List<T> 的每个元素执行指定操作
- List<T> 排序(Sort)查找(Find)功能的多种实现
- List<T>线性查找和二分查找BinarySearch效率分析
- 添加元素到List<T>
- 使List<userClass>.Contains可以查找重復的對象
- 查找Dom树中所有<li>的元素,并改变其内容
- map常用成员(关联容器)----创建map<主键,主键对应的值>,增insert,删erase,改查找find,然后修改second,遍历iterator,获取元素个数size,判空empty
- List<T>采用delegate快速实现排序、查找等操作
- List<T>模糊查找、排序(非Linq)
- List<T> 查找、删除
- C# List<> add函数总是覆盖List中原有元素的解决办法
- List<T>采用delegate快速实现排序、查找等操作
- C# List<> add函数总是覆盖List中原有元素的解决办法
- 移除List<T>的元素
- 去除List<Object>集合中重复的元素(利用HashSet的特性---无重复元素)
- FCL应用技巧之------使用List<T>的Distinct()去除重复元素