List查询时,如果处置惩罚比较大的数据则运用HashSet<T>类,由于List是基于线性表操纵的.但其内嵌了二分查找(BinarySearch),因而,也能够在存储完以后举行排序,随后用二分查找.不过也能够如许设想:Dictionary<TKey,List<T>>应用Dictionary高效的搜刮查询才能来搜刮List<T>对象.然则数据倒是运用List<T>存储.
HashSet<T>是一个不包括反复范例的鸠合类.此鸠合基于散列值,其操纵都是很快的.相比较HashTable<TKey,TValue>,此鸠合类只包括一个范例参数,不是基于键值对来存储寻觅元素的.如果须要肯定元素是不是存在,只须要挪用Contains()要领即可.
List 查找复杂度 O(n), HashSet 查找复杂度O (1)
Dictionary类的删除增加操纵:
默许状况不排序下,增加了元素的位置是在删除元素的位置.
如果排序,增加了元素的位置照旧会是在未排序之前的元素位置.
static void Main(string[] args) { Dictionary<int, int> _dic = new Dictionary<int, int>(); _dic.Add(3, 3); _dic.Add(1, 1); _dic.Add(2, 2); _dic.Add(6, 6); Console.WriteLine("未经排序:");foreach (var k in _dic) { Console.WriteLine(k.Key + " " + k.Value); }var dic_sort = from dic in _dic orderby dic.Key select dic; Console.WriteLine("未经处置惩罚:");foreach (var k in dic_sort) { Console.WriteLine(k.Key + " " + k.Value); } Console.WriteLine("经由删除增加处置惩罚:"); _dic.Remove(2); _dic.Add(4, 4);foreach (var k in _dic) { Console.WriteLine(k.Key + " " + k.Value); } Console.Read(); }
你也能够本身测试下...
以上就是C#基本之操纵优化实例教程的细致内容,更多请关注ki4网别的相干文章!