Array

  • 连续性的内存空间
  • 快速定位查找元素,随机访问性强,查找效率高
  • 已知的统一的元素类型,减小运行时开销
  • 固定长度,不能再新增元素

ArrayList

  • 连续性的内存空间
  • 快速定位查找元素,随机访问性强,查找效率高
  • 可变长度,便于对元素进行增删操作
  • 未知的元素类型,Runtime需要类型检测,Runtime需装箱拆箱动作,为此产生性能开销
  • 可对元素进行增删改操作,需要重新调整后续元素的位置,为此产生性能开销

List<T>

  • 连续性的内存空间
  • 快速定位查找元素,随机访问性强,查找效率高
  • 可变长度,便于对元素进行增删操作
  • 泛型,统一的已知类型,避免运行时类型检测,避免运行时装箱拆箱,减少运行时性能开销
  • 可对元素进行增删改操作,需要重新调整后续元素的位置,为此产生性能开销

LinkedList<T>

  • 可变长度,便于对节点(元素)进行增删操作
  • 增删性能快,不影响其它节点(元素)位置调整
  • 泛型,统一的已知类型,避免运行时类型检测,避免运行时装箱拆箱,减少运行时性能开销
  • 无序的、分散存储,相互分离,靠节点(元素)中的指针指向关联下一节点(元素)
  • 查找效率低,不能随机查找,不支持循环,仅可从首(末)节点(元素) 透过指针指向逐次查找下个节点(元素)

Stack

  • 栈:先进后出,小型的、连续性的、存储变量及参数的内存空间,读取速度快
  • 堆:无序的,存储数据对象的内存区域,读取速度相对慢,可手动释放的区域

Queue

  • 线性的,有序的,先进先出
  • 队尾插入,队头删除
  • 顺序队列,预期长度;链式队列,可变长度

Dictionary<T>

  • 哈希存储结构,键值对访问,通过索引快速查找
  • 不重复的键值,唯一性
  • 可遍历的数据集
  • 泛型,避免运行时类型检测,避免运行时装箱拆箱
  • 散列存储,不固定长度,添加删除时,无需元素位置的调整

C#中的数据结构的更多相关文章

  1. java中的数据结构(集合|容器)

    对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...

  2. Python 中的数据结构总结(一)

    Python 中的数据结构 “数据结构”这个词大家肯定都不陌生,高级程序语言有两个核心,一个是算法,另一个就是数据结构.不管是c语言系列中的数组.链表.树和图,还是java中的各种map,随便抽出一个 ...

  3. [转]详细介绍java中的数据结构

    详细介绍java中的数据结构 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类.一起来看本文吧! 也许你已经熟练使用了java.util包里面的各 ...

  4. 详细介绍java中的数据结构

    详细介绍java中的数据结构 http://developer.51cto.com/art/201107/273003.htm 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个 ...

  5. sql点滴42—mysql中的数据结构

    原文:sql点滴42-mysql中的数据结构 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小 ...

  6. PHP中的数据结构

    PHP7以上才能安装和使用数据结构,安装比较简单: 1. 运行命令 pecl install ds 2. 在php.ini中添加 extension=ds.so 3. 重启PHP或重载配置  Coll ...

  7. Python中的数据结构

    Python中的数据结构 这里总结一下Python中的内置数据结构(Built-in Data Structure):列表list.元组tuple.字典dict.集合set,涵盖的仅有部分重点,详细地 ...

  8. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

  9. PHP中的数据结构:DS扩展

    PHP7以上才能安装和使用该数据结构扩展,安装比较简单: 1. 运行命令 pecl install ds 2. 在php.ini中添加 extension=ds.so 3. 重启PHP或重载配置 在这 ...

  10. JavaScript中的数据结构及实战系列

    本系列主要是讲解JavaScript中的数据结构及在实际项目中遇到的地方 JavaScript中的数据结构及实战系列(1):队列 JavaScript中的数据结构及实战系列(2):栈

随机推荐

  1. Day14_76_反射与静态语句块

    反射与静态语句块 * 获取class对象与静态语句块的关系 package com.shige.Reflect; import java.nio.channels.ClosedSelectorExce ...

  2. JavaScript深拷贝与浅拷贝的区别和实现方式

    如何区分深拷贝和浅拷贝呢,简单来说对象B拷贝了对象A,如果对象A和对象B共用一个对象,对象B改变对象A跟着改变这就是浅拷贝:但如果对象B拷贝了对象A,但是对象A和对象B是分开的,那么就是深拷贝 基本数 ...

  3. 面试有关TCP常问的几个问题

    在面试中网络问题是一定会考察的,而TCP协议则是考察网络知识的重点.经常会被问道的问题如下: 请讲一下TCP协议建立连接的过程 请介绍TCP协议中的三次握手和四次挥手是怎么样的 为什么TCP协议要三次 ...

  4. SQL Server 用法总结

    1  数据分页 Offset and Fetch 的分页方法 最优> ROW_NUMBER() 的分页方法 eg: select ID,Title from Article_Detail ord ...

  5. centos7安装kubernetes k8s 1.18

    可以参考其他网友的阿里云搭建k8s高可用集群(1.17.3) https://www.cnblogs.com/gmmy/p/12372805.html 准备四台centos7虚拟机,用来安装k8s集群 ...

  6. jinja2的简单使用

    后端代码 from jinja2 import Template def index(): with open('./index.html', 'r', encoding='utf-8') as fp ...

  7. Docker笔记(二) 安装常用软件

    常用环境安装 这里收集一些常用环境的安装步骤,可直接复制进行使用,节省安装时间,后续会随时补充 安装MySQL5.7.32 下载mysql5.7.32的镜像 ( 记得下载镜像要先确保镜像仓库中存在这个 ...

  8. IDAPython类库---idc.py的源码

    #!/usr/bin/env python #--------------------------------------------------------------------- # IDAPy ...

  9. python 压缩模块大杂烩(zipfile,bz2,lzma,gzip,tarfile,zlib)

    [*] 以下压缩模块请结合python的官方文档(https://docs.python.org/3.5/library/index.html)来实践或者对比(我的是python 3.5) 1.pyt ...

  10. UVA11375火柴(递推+大数)

    题意:       给你n根火柴,问你能组成多少种数字,比如3根可以组成1或者7,组成的数字中不能有前导0, 思路:       我们开一个数组,d[i]记录用i跟火柴可以组成多少种数字,则更新状态是 ...