学习记录:集合、字典、堆栈

今天是学习C#第16天。。。
所学集合、字典、堆栈。


数组的局限性:
1.数组只能存储相同类型的数据
2.数组不能动态的扩展长度


集合:

集合原本是数学上的一个概念,表示一组具有某种性质的数学元素,引用到程序设计中表示一组具有相同性质的对象。

  • 泛型集合类一般位于System.Collections.Generic命名空间,
  • 非泛型集合类位于System.Collections命名空间。
  • 此外,System.Collections.Specialized命名空间中也包含一些有用的集合类。

集合的类型:
集合可范围两类:泛型集合与非泛型集合


非泛型集合:

动态数组(ArrayList)
堆栈(Stack)
队列(Queue)
哈希表(HashTable)

泛型集合:

动态数组(ArrayList<>)
堆栈(Stack<>)
队列(Queue<>)
字典(Dictionary<Tkey,Tvalue>)※※※

ArrayList

动态数组

  • 动态的增加和减少元素

  • 实现了ICollection和IList和IEnumerable接口

  • 灵活的设置数组的大小

  • 不安全的集合类型

  • 其元素为值类型时,效率不高(装箱和拆箱耗性能)

    ArrayList numbers = new ArrayList();
    

ArrayList常用方法与描述:

描述和用法
Add() 将对象添加到ArrayList的结尾处
Insert() 将元素插入ArrayList的指定索引处
Remove() 从ArrayList中移除特定对象的第一个匹配项
RemoveAt() 移除ArrayList的指定索引处的元素
Reverse() 将整个ArrayList当中元素的顺序反转
Contains() 确定某元素是否在ArrayList中
Clear() 从ArrayList中移除所有元素

List<T>

泛型动态数组

  • List类是ArrayList类的泛型等效类

  • 同样实现了IList接口,IEnumrator接口和ICollection

  • 与ArrayList不同的是,声明集合时需要声明集合内部的数据类型,即T的类型.

  • 安全的集合类型

  • 某种情况时,在处理值类型时其处理速度比ArrayList快的多

    List<int> number=new List<int>();
    List<string> str=new List<string>();
    

List<T>常用方法与描述:

描述和用法
Add() 将对象添加到List<T>的结尾处
Insert() 将元素插入List<T>的指定索引处
Remove() 从List<T>中移除特定对象的第一个匹配项
RemoveAt() 移除List<T>的指定索引处的元素
Reverse() 将整个List<T>当中元素的顺序反转
Contains() 确定某元素是否在List<T>中
Clear() 从List<T>中移除所有元素
IndexOf(T) 搜索指定对象,并返回整个List<T>中第一个匹配项的从0开始的索引

Stack(Stack<>)

堆栈

  • 后进先出(LIFO)的一种数据结构,本质上堆栈也是一种线性结构
  • 线性结构的基本特点:即每个节点有且只有一个前驱结点和一个后续节点
  • 随着像Stack中添加元素,容量通过重新分配按需自动增加
  • 可以接受null作为有效值
  • 允许重复的元素
  • 不安全的数据结构
  • 其泛型为Stack<T>

Stack常用方法与描述

描述和用法
Push() 将对象插入Stack的顶部.(入栈操作)
Pop() 移除并返回Stack顶部的对象.(出栈操作)
Peek() 返回位于stack顶部的对象,但不移除.
Contains() 确定某元素是否在栈中
Clear() 从statck中移除所有对象
Count 获取栈中包含的元素

Queue(Queue<>)

队列

  • 先进先出(FIFO)的一种数据结构
  • 随着像Queue中添加元素,容量通过重新分配按需自动增加,可以通过TrimToSize来减少容量
  • 可以接受null作为有效值
  • 允许重复的元素
  • 不安全的数据结构
  • 其泛型为Queue<T>
  • 在A*算法中会用优先级队列处理路径节点

Queue常用方法与描述:

描述和用法
Enqueue() 将对象添加到Queue的结尾处,入队.
Dequeue() 移除并返回位于Queue开始处的对象
Peek() 返回位于Queue开始处的对象但不将其移除
Contains() 确定某元素是否在Queue中
Clear() 从Queue中移除所有对象
Count 获取Queue中包含的元素数

Dictionary<K,V>

字典

  • 处理和表现类似key-value的键值对的集合
  • Key和Value的类型由泛型指定
  • key值必须唯一,区分大小写
  • Value可以是值类型变量,也可以是对象

Dictionary<K,V>常用方法与描述:

描述和用法
Add(TKey, TValue) 将指定的键和值添加到字典中。
Clear() 将所有键和值从 Dictionary<TKey,TValue> 中移除。
ContainsKey(TKey) 确定是否 Dictionary<TKey,TValue> 包含指定键。
ContainsValue(TValue) 确定 Dictionary<TKey,TValue> 是否包含特定值。
Remove(TKey) 将带有指定键的值从 Dictionary<TKey,TValue> 中移除。
TryGetValue(TKey, TValue) 获取与指定的键关联的值。
Keys 获得一个包含 Dictionary<TKey,TValue> 中的键的集合。
Values 获得一个包含 Dictionary<TKey,TValue> 中的值的集合。

HashTable

哈希表

  • 处理和表现类似key-value的键值对的集合
  • Key和Value都是object类型
  • key值必须唯一,区分大小写
  • Value可以是值类型变量,也可以是对象

HashTable常用方法与描述:

描述和用法
Add() 将指定的键和值添加到哈希表中
Clear() 从 Hashtable 中移除所有的元素。
ContainsKey() 判断 Hashtable 是否包含指定的键。
ContainsValue() 判断 Hashtable 是否包含指定的值。
Remove() 从 Hashtable 中移除带有指定的键的元素。
Keys 获取一个ICollection,包含 Hashtable 中的键。
Values 获取一个ICollection,包含Hashtable中的值
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容