CS4L11——泛型栈和队列
CS4L11——泛型栈和队列 泛型栈和泛型队列 Stack<> 和 Queue<> 是 C# 为我们封装好的泛型容器,它们是 Stack 和 Queue 的泛型实现 使用 Stack<> 和 Queue<> 需要引用 System.Collections.Generic 这个命名空间 实例化一个 Stack<> 和 Queue<> 必须要指明它要装载什么类型的元素 12345678910using System.Collections.Generic;class Program{ static void Main(string[] args) { Stack<int> stack = new Stack<int>(); Queue<object> queue = new Queue<object>(); }} 使用上 和之前的 Stack 和...
CS4L10——LinkedList
CS4L10——LinkedList 本章代码关键字 12345678910111213141516171819//链表LinkedList<> //链表类linkedList<>.AddLast() //在链表尾部添加元素linkedList<>.AddFirst() //在链表头部添加元素linkedList<>.Find() //获取指定值的节点linkedList<>.AddAfter() //在某个节点后添加节点linkedList<>.AddBefore() //在某个节点前添加节点linkedList<>.RemoveFirst() //移除头节点linkedList<>.RemoveLast() //移除尾节点linkedList<>.Remove() ...
CS4L9——顺序存储和链式存储
CS4L9——顺序存储和链式存储 数据结构 数据结构是计算机存储、组织数据的方式(规则) 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合 比如自定义的一个 类 也可以成为一种数据结构 自己定义的数据组合规则、 不需要把数据结构想的太复杂,简单来说,就是人定义的 存储数据 和 表示数据之间的 规则而已 常用的数据结构(前人总结和制定的一些经典规则):数组、栈、队列、链表、树、图、堆、散列表 顺序存储和链式存储 是数据结构中两种 存储结构 线性表 线性表是一种数据结构,是由n个具有相同特性的数据元素的有限序列 比如数组、ArrayList、Stack、Queue、链表等等 顺序存储 数组、Stack、Queue、List、ArrayList —— 顺序存储 只是 数组、Stack、Queue 的 组织规则不同而已 顺序存储就是用一种地址连续的存储单元依次存储线性表的各个数据元素 链式存储 单向链表、双向链表、循环链表 ——...
CS4L8——Dictionary
CS4L8——Dictionary 本章代码关键字 1234567891011Dictionary<> //字典,通过指定类型的键值对存储值dictionary<>.Add() //添加键值对dictionary<>.Remove() //通过键移除键值对dictionary<>.Clear() //清空字典dictionary<>[] //通过索引器修改值和获取值dictionary<>.ContainsKey() //检测是否存在键dictionary<>.ContainsValue() //检测是否存在值dictionary<>.Count //字典键值对数量dictionary<>.Keys ...
CS4L7——List
CS4L7——List 本章代码关键字 123456789101112List<> //泛型列表类,需要在实例化时指定存储元素类型,由于不使用object,存储值类型可避免装箱拆箱list<>.Add() //添加元素list<>.AddRange() //范围添加元素list<>.Insert() //插入list<>.Remove() //移除某个元素,有重复移除第一个list<>.RemoveAt() //移除某个位置上的元素list<>.Clear() //清空list<>.Contains() //列表是否存在某个元素list<>.IndexOf() //正向查找元素位置,从头找,找到的返回值是下标,若找不到则返回...
CS4L6——泛型约束
CS4L6——泛型约束 本章代码关键字 1where //泛型约束关键字 泛型约束 让泛型的类型有一定的限制,关键字:where,泛型约束一共有6种,可以组合使用(部分约束不能组合使用) 值类型 —— where 泛型字母 : struct 引用类型 —— where 泛型字母 : class 存在无参公共构造函数 —— where 泛型字母 : new() 某个类本身或者派生类 —— where 泛型字母 : 类名 某个接口的派生类型 —— where 泛型字母 : 接口名 另一个泛型类型本身或者派生类型 —— where 泛型字母 : 另一个泛型字母 where 泛型字母 : (约束的类型) 各泛型约束讲解 值类型约束 where 泛型字母 : struct 限定泛型只能为值类型 1234567891011121314class Test1<T> where T : struct{ public T value; public void TestFun<K>(K v) where K :...
CS4L5——泛型
CS4L5——泛型 泛型 泛型实现了类型参数化,达到代码重用目的,通过类型参数化来实现同一份代码上多种操作类型 泛型相当于类型占位符,定义类或方法时使用替代符代表变量类型,当真正使用类或者方法时在再具体指定类型 申明泛型时,它只是一个类型的占位符,泛型真正起作用的时候是在使用它的时候 泛型占位字符可以有 n 个,用逗号隔开,泛型占位字母一般是大写字母 不确定泛型类型时 获取默认值 可以用 default(占位字符),看到 <> 包裹的字母 那肯定是泛型 关键字:<> 泛型分类 泛型类和泛型接口 基本语法: class 类名<泛型占位字母> interface 接口名<泛型占位字母> 泛型函数 基本语法:函数名<泛型占位字母>(参数列表) 注意:泛型占位字母可以有多个,用逗号分开,常用泛型占位字母是...
CS4L4——Hashtable
CS4L4——Hashtable 本章代码关键字 123456789101112Hashtable //散列表,基于键的哈希代码组织起来的键值对,使用object存储hashtable.Add() //添加键值对hashtable.Remove() //根据键移除键值对hashtable.Clear() //清空hashtable[] //索引器hashtable.Contains() //检测是否存在键hashtable.ContainsKey() //检测是否存在键hashtable.ContainsValue() //检测是否存在值hashtable.Count //获取键值对数量Hashtable.Keys //获取键的集合hashtable.Values ...
CS4L3——Queue
CS4L3——Queue 本章代码关键字 12345678Queue //队列queue.Enqueue() //向队列内存储值queue.Dequeue() //从队列内取出值queue.Peek() //查看队列首位的值queue.Contains() //检查值是否存在于队列内部queue.Clear() //清空队列queue.Count //队列的元素数量queue.ToArray() //将队列转换为数组 Queue Queue(队列)是一个C#为我们封装好的类,它的本质是 object[] 数组,只是封装了特殊的存储规则 Queue 是队列存储容器,队列是一种先进先出的数据结构 先存入的数据先获取,后存入的数据后获取,队列是先进先出 使用 Queue 需要引用 System.Collections 这个命名空间 123456789using System.Collections;class Program{ ...
CS4L2——Stack
CS4L2——Stack 本章代码关键字 12345678Stack //栈类,使用object存储所有值stack.Push() //向栈压入值stack.Pop() //从栈弹出值stack.Peek() //查看栈顶部值,不弹出stack.Contains() //栈是否存在某个元素stack.Clear() //清空栈stack.Count //栈的数量stack.ToArray() //栈转换为数组 Stack Stack(栈)是一个C#为我们封装好的类,它的本质是 object[] 数组,只是封装了特殊的存储规则 Stack 是栈存储容器,栈是一种先进后出的数据结构 先存入的数据后获取,后存入的数据先获取,栈是先进后出 使用 Stack 需要引用 System.Collections 这个命名空间 123456789using System.Collections;class Program{ ...