C#基础随手笔记之基础操作优化

对数据的查询,删除等基本操作是任何编程语言都会涉及到的基础,因此,研究了一下C#中比较常用的数据操作类型,并顺手做个笔记.

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();
        }

你也可以自己测试下...

时间: 2024-11-09 03:37:22

C#基础随手笔记之基础操作优化的相关文章

HTML&CSS基础学习笔记6-文本操作标签

文本也许是HTML里最常见的元素了,所以我们有必要对HTML的文本操作标签做下认识. 1. <em>,<i>内的文字呈现为倾斜效果: 2. <strong>,<b>内的文字呈现为加粗效果: 3. <b>,<i>只是单纯的为了让文本具有某种特殊样式,而<strong>,<em>不仅带有特殊样式,而且也表达了某种语义: 4. 在单纯的为了达到某种样式的情况下,建议使用不带有语义的标签. 体验如下:http://ww

黑马程序员--Java基础学习笔记【文件操作、递归】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 文件操作 文件和目录路径名的抽象表示形式. 成员变量 StringpathSeparator= File.pathSeparator; // 路径分隔符 System.out.println(pathSeparator); // ; Stringseparator= File.separator;// 默认名称分隔符 System.out.println(separator); // \ 构造

python3基础学习笔记(基础知识)-01

python的基础学习: 数据类型:python是弱类型语言,在定义变量的时候,可以不直接制定数据类型. 1.Numbers: int 有符号整型    a = (-1)  a = 1 long 长整型 float 浮点型 complex 复数 2.boolean: True    Flase 3.String :字符串   a = "Hello World" 4.List :列表 有序  list1 = [] 5.Tuple : 元组  定义后不能被修改  a = (1,2,3) 6

python基础学习笔记——Python基础教程(第2版 修订版)第十章(充电时刻)

#模块 #包 #模块中有什么 dir l列出特性 #文档 print range.__doc__ #阅读源代码 print copy.__file__ #标准库 sys os fileinput #集合,堆和双端队列 set(range(10)) 集合 堆 数据结构 没有独立的 只有一个包含一些堆操作的模块,叫做heapq(6个函数) 双端队列 #time #random #shelve #re #包含对正则表达式的支持

python基础学习笔记——Python基础教程(第2版 修订版)第四章(字典)

#创建 phone={'alice':'12234','beth':'352235'} #dict使用 items=[('name','gumby'),('age',42)} d=dict(items) d=dict(name='gumby',age=42) #基本字典操作 lend(d) d[k] d[k]=v k in d x={} x[42]='foobae' x {42:'foobar'} people={'alice':{'phone':'123','addr':'foo drive3

python基础学习笔记——Python基础教程(第2版 修订版)第11章(文件与素材)

#文件模式 open(name[.mode[.buffering]]) r w a b + f=open(r'c:\text\somefile') #基本文件方法 #对文件内容进行迭代 f=open('somefile.txt','w') #r是默认的 f.write('hello') f.read(4) f.close() #管式输出 $ cat somefile.txt|python somescript.py|sort #读写行 writelines readlines #关闭文件 #对文

python基础学习笔记——Python基础教程(第2版 修订版)第八章(异常)

#异常 类 #捕捉 try try: x=input(sds) y=input(sd) print x/y except ZeroDivisionError print(0sdf) except TypeErrpr except (ZeroDivisionError,TYpeError) #捕捉对象 except(Zerosion.)as e: print(e) #finally

python基础学习笔记——Python基础教程(第2版 修订版)第一章

#模块 import math math.floor(9) from math import sqrt sqrt(9) #无需使用前缀 import cmath cmath.sqrt(-1) #不能使用from...inport #转义和单双引号 >>>"\"hello,word\"she said" '"hello,word"she said' #使用print不显示引号 #拼接字符串  + #输入 input raw_inp

python基础学习笔记——Python基础教程(第2版 修订版)第12章(图形用户界面)

#丰富的平台 Tkinter wxpython ..... #wxpython import wx app=wx.App() win=wx/Frame(None) win.Show() app.MainLoop() #增加按钮a app=wx.App() win=wx.Frame(None) btn=wx.Button(win) win.Show() app.MainLoop() win=wx.Frame(None,title="simple Editor") loadButton=w