常用集合类:

数组(Array)的不足(即:集合与数组的区别)

1. 数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的。

2. 数组要声明元素的类型,集合类的元素类型却是object。

3. 数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。

4. 数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!

数组列表(ArrayList)

ArrayList可以存储任何类型,不像List泛型那样有严格要求,List<T>更有效,ArrayList就相当于是List<object>。

ArrayList类对象被设计成为一个动态数组类型,其容量会随着需要而适当的扩充方法:

1:Add()向数组中添加一个元素

2:Remove()删除数组中的一个元素

3:RemoveAt(int i)删除数组中索引值为i的元素

4:Reverse()反转数组的元素

5:Sort()以从小到大的顺序排列数组的元素

6:Clone()复制一个数组

System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。System.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。

列表(List)

可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法,在决定使用List还是使用ArrayList类(两者具有类似的功能)时,记住List类在大多数情况下执行得更好并且是类型安全的。如果对List类的类型T使用引用类型,则两个类的行为是完全相同的。但是如果对类型T使用值类型,则需要考虑实现和装箱问题。

如果对类型T使用值类型,则编译器将特别针对该值类型生成List类的实现。这意味着不必对List对象的列表元素进行装箱就可以使用该元素,并且在创建大约500个列表元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。

哈希表(HashTable)

一、哈希表(Hashtable)简述

在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;

value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对.

二、哈希表的简单操作

在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);

在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);

从哈希表中移除所有元素:HashtableObject.Clear();

判断哈希表是否包含特定键key:HashtableObject.Contains(key);

字典(Directonary)

Hashtable和Dictionary<K, V>类型
 1:单线程中推荐使用Dictionary,有泛型优势,且读取速度较快,容量利用更充分.
 2:多线程中推荐使用Hashtable,默认Hashtable允许单线程写入, 多线程读取对Hashtable进一步调用Synchronized()方法可以获得完全线程安全的类型,而Dictionary非线程安全,必须人为使用lock语句进行保护, 效率大减。
 3:Dictionary有按插入顺序排列数据的特性(注:但当调用Remove()删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用Dictionary能获得一定方便。

HashTable应用场合:做对象缓存,树递归算法的替代,和各种需提升效率的场合。HashTable中的key/value均为object类型,由包含集合元素的存储桶组成。存储桶是 HashTable中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,存储桶可令搜索和检索更为便捷。每一存储桶都与一个哈希代码关联,该哈希代码是使用哈希函数生成的并基于该元素的键。HashTable的优点就在于其索引的方式,速度非常快。如果以任意类型键值访问其中元素会快于其他集合,特别是当数据量特别大的时候,效率差别尤其大。

排序列表(SortedList)

与哈希表类似,区别在于SortedList中的Key数组排好序的

名-值集合(NameValueCollection)

NameValueCollection与HashTable很类似,但是他们还是有区别的,HashTable 的KEY是唯一性,而NameValueCollection则不唯一

堆栈(Stack)

表示对象的简单的后进先出非泛型集合。Push方法入栈,Pop方法出栈

队列(Queue)

队列先进先出,enqueue方法入队列,dequeue方法出队列

常用集合接口系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html

常用集合类系列:http://www.cnblogs.com/fengxiaojiu/p/7997541.html

c#中常用集合类和集合接口之集合类系列相关推荐

  1. Dataset:数据集集合(综合性)——机器学习、深度学习算法中常用数据集大集合(建议收藏,持续更新)

    Dataset:数据集集合(综合性)--机器学习.深度学习算法中常用数据集大集合(建议收藏,持续更新) 目录 常规数据集 各大方向分类数据集汇总 具体数据集分类 相关文章 DL:关于深度学习常用数据集 ...

  2. c#中常用集合类和集合接口之接口系列【转】

    常用集合接口系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html 常用集合类系列:http://www.cnblogs.com/fengxiaoji ...

  3. java接口与集合_【总结】Java常用集合接口与集合类

    目录常见集合接口概述Collection Map Collection接口 Map接口 补充内容 常见集合接口概述 Java中包含许多集合接口.其中比较常见的主要是Collection接口和Map接口 ...

  4. 黑马毕向东Java课程笔记(day14-1——14-11):集合类(集合框架)——集合类分类与特点+List集合接口及其子类

    1.集合类特点   为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式.   数组和集合类同是容器,有何不同 ...

  5. 工作中常用的Stream集合处理

    前言:Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,它允许把函数作为一个方法的参数,让我们的代码更优雅简洁. Java8最 ...

  6. 程序开发中常用的第三方API接口汇总,包含各种类别的介绍

    下面列举了100多个国内外常用API接口,非常简单,略懂技术的菜鸟也能直接对接,包含快递单号查询.天气查询.生活常用.文体娱乐.企业金融.通讯服务.出行.技术开发等类别.API接口是获取网络服务最便捷 ...

  7. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  8. java集合框架(集合类)

    目录 集合框架体系图 List列表特点 ArrayList存储结构​ LinkedList存储结构 ArrayList集合常用方法 LinkedList集合常用方法 ArrayList与LinkedL ...

  9. 【学习笔记】JDBC:java提供的专门操纵数据库的API JDBC驱动程序的类型 JDBC常用的类与接口

    JDBC技术 JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准接口,JDBC是一种底层的API,因此访问数据库 ...

最新文章

  1. QMessageBox对话框
  2. leetcode算法题--合并两个有序链表
  3. python之路径拼接urljoin
  4. Apache Hadoop 入门教程第一章
  5. lstm解决梯度消失
  6. 计算机应用计算机电算化题库,2014年浙江省会计电算化客观题题库
  7. linux 关闭防火墙 centos7,centos7关闭防火墙和selinux
  8. 比较有意思的老家见闻一二三
  9. javaweb增删改查实例_JavaWeb图像可视化管理系统之后台搭建(二)用户管理与增删改查(内含代码)...
  10. highcharts绘制统计图的应用
  11. Bootstrap (remote)事件监听多次
  12. LLVM各种格式转换图
  13. linux tex文件编译,用latexmk编译XeLaTeX tex文件
  14. cad快看_CAD中遇到文件损坏,别着急,这几招能帮你挽回损失
  15. 老路教你用得上的商学课_系列笔记
  16. FFT:快速傅里叶变换与高精度乘法
  17. 「励志文章」清华学霸演讲:你可曾为学习拼尽全力?
  18. 伊犁哈萨克自治州谷歌高清卫星地图下载
  19. [prometheus]Step7-prometheus使用阿里云企业邮箱告警
  20. oracle11g ins208022,解决重装 Oracle 出现的 INS-32025 问题,完全卸载 Oracle11g

热门文章

  1. C语言的指针初始化特别注意一点
  2. get_metrology_object_result 获取计量模型的测量结果
  3. 机器人实现屠宰自动化
  4. windows中VS卸载opencv配置,重新安装其他版本
  5. c语言用数组写密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序...
  6. 漫步者lollipods如何调节音量_漫步者MF5扩音器体验:老师值得入手
  7. 路由器01---k2刷Pandora
  8. JAVA格式化当前日期或者取年月日
  9. 【转】winform回车变为tab
  10. C语言中__attribute__ ((at())绝对定位的应用