• C# DataConstruct 数据结构关于 Array,ArrayList,List,HashTable,Dictionnary的学习记录


    Array:
    数组,开辟连续存储的内存存储数据.Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据
    优点:
    1.查询速度快,可以利用索引快速查询到对象
    2.类型安全,支持值类型和引用类型的array数组

    缺点:
    1.要定义容量,容量大了容易造成内存溢出
    2.不利于在数组中间插入数据,因为会导致后面的数据重新编排索引


    ArrayList:
    解决Array的问题,集成IList接口,可以动态的插入数据
    1、ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型的数组

    2、如果增加的元素个数超过10个,那么ArrayList底层会生成一个新的数组,长度为原数组的1.5倍+1,然后将原数组的内容复制到新数组中,并且后续增

    优点:
    1.动态插入数据,不需要初始化大小
    2.可以在中间插入数据
    缺点:
    1.需要装箱拆箱,因为类型只支持object
    2.类型不安全.
    3.默认初始大小10,如果超出后增量1.5倍,并且将原来的数据挪到新的空间下,性能较差
    4.、对于ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,代价比较大

    List:
    类型安全,支持泛型类,是普通业务中比较适用和常用的类
    优点:
    1.类型安全,List<T>支持任意类型的数据,如果是值类型,内部使用Array
    2.避免了多余的装箱、拆箱操作
    3.不需要初始化大小,在中间插入也支持

    常用的数据类型的使用方式,替代品。

    原文地址:https://github.com/dotnet/platform-compat/blob/master/docs/DE0006.md

  • 相关阅读:
    word2vector 资料
    回声状态网络(ESN)基础教程
    GBDT:梯度提升决策树
    B-树,B+树,B*树详解
    HTTP权威指南-基础知识
    JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)
    HTML自定义对象与属性探究(谷歌,火狐,IE9浏览器没问题)
    冒泡,setinterval,背景图的div绑定事件,匿名函数问题探究
    JavaScript高级程序设计--表单脚本
    我是跨域的JSONP
  • 原文地址:https://www.cnblogs.com/mailaidedt/p/10283602.html
Copyright © 2020-2023  润新知