.net-----集合和数据结构
创始人
2024-02-18 03:39:01

集合和数据结构

  • 前言
  • 集合和数据结构的基本概念
    • 命名空间
  • 列表类集合
    • 列表类集合:数组列表
    • 列表类集合:列表List
    • 双向链表LinkedList
  • 字典类集合
    • 字典类集合类型
    • 哈希表Hashtable
    • 字典类集合:Dictionary
    • 排序列表
    • SortedList
    • 排序字典SortedDictionary
  • 队列集合类型
  • 堆栈集合类型
  • 散列集合
    • 用于集合运算的方法:
    • 用于测试集合的方法:
  • 位集合
    • BitArray 类
    • BitVector32类
  • 专用集合

前言

集合和数据结构的基本概念

列表类集合

字典类集合

队列集合类型

堆栈集合类型

散列集合

位集合

集合和数据结构的基本概念

命名空间

  • System.Collections
    对象:列表/链表、位数组、哈希表、队列和堆栈

  • System.Collections.Generic
    定义泛型集合的接口和类

  • System.Collections.Specialized
    包含专用的集合

列表类集合

  • 列表类集合类型基于IList接口,集合中的每个元素都只包含一个值

  • 列表类集合类型包括:

Array
ArrayList集合类型
List集合类型

列表类集合:数组列表

ArrayList或List
用于构建复杂的数组或列表集合,始终一维
容量可根据需要自动扩充
提供添加、插入或移除某一范围元素的方法

添加、删除、查找、数据排序、拷贝和转换、元素数容量和实际数ArrayList al = new ArrayList();al. Add(1);
al. Insert(1,”A”);
al. Remove(3);
al. RemoveAt(2);
……

列表类集合:列表List

List
对应于 ArrayList 的泛型类
表示可通过索引访问的对象的强类型列表
该类使用大小可按需动态增加的数组实现 IList泛型接口
提供用于对列表进行搜索、排序和操作的方法

List weekdays = new List();
weekdays. Add("Monday"); 
……
weekdays. Insert(1, "Tuesday");

双向链表LinkedList

  • 通用链表,提供LinkedListNode类型的单独节点
  • LinkedListNode属性Previous 和Next用于访问其前后节点
  • LinkedListNode属性Value用于获取节点的值
  • 属性List用于获取节点所属的LinkedList
  • LinkedList属性First和Last表示第一个和最后一个节点
LinkedList list = new LinkedList(); //创建双向链表
list.AddFirst(0); list.AddLast(8);
LinkedListNode lln1 = new LinkedListNode(1); //创建节点
LinkedListNode lln2 = new LinkedListNode(2); //创建节点
list.AddFirst(lln1); list.AddLast(lln2);
list.AddBefore(list.Last, 33); list.AddAfter(list.Last, 25);
LinkedListNode mark1 = list.Find(8); //查找节点
list.AddBefore(mark1, 11);
LinkedListNode node = list.First; //输出列表内容

字典类集合

字典类集合类型

基于IDictionary/IDictionary 接口
集合中的每个元素都包含键/值对

Hashtable集合类型
Dictionary 集合类型
SortedList集合类型
SortedList集合类型
SortedDictionary 集合类型

哈希表Hashtable

键/值(key/value)对的集合,根据键的哈希代码进行组织
key和value键值均为object类型

每个键(key)必须是唯一的
添加后键(key)就不能更改
键(key)不能为 null 引用,但值(value)可以

在这里插入图片描述

字典类集合:Dictionary

  • TKey表示字典中的键的类型
  • TValue表示字典中的值的类型
  • 集合中的每个元素都是一个KeyValuePair结构,由一个值及其相关联的键组成
  • 提供了从一组键到一组值的映射

在这里插入图片描述

排序列表

  • 键/值(key/value)对的集合,按键排序,可按键和索引访问

  • 集合中的每个元素都是一个可作为DictionaryEntry对象进行访问的键/值对

  • 添加和移除元素时,元素会按正确的排序顺序插入或移除,同时索引也进行相应的调整

SortedList

  • 泛型类,表示键/值(key/value)对的集合

  • 以基于键的排序顺序维护元素,并可按照键和索引访问

  • 提供了从一组键到一组值的映射

  • 每个元素都是一个KeyValuePair结构

元素对象查找的方法Contains、ContainsKey、ContainsValue、IndexOfKey和IndexOfValue
对象设置和获取的方法GetByIndex、GetKey、GetKeyList、GetValueList和SetByIndex

排序字典SortedDictionary

SortedList使用的内存较少
SortedDictionary可对未排序的数据执行更快的插入和移除

SortedList list = new SortedList(); //创建List实例对象
list.Add(5, "Friday"); 
list.Remove(7);  //使用Remove方法删除索引7位置的元素
list.RemoveAt(5); ……SortedList list = new SortedList();
list.Add("txt", "notepad.exe"); ……SortedDictionary list = new SortedDictionary();
list.Add("txt", "notepad.exe"); ……
  • 添加元素的方法——Add;
  • 删除元素的方法——Remove, Clear
  • 元素对象查找方法——Contains,ContainKey,ContainValue
  • Count属性——表中键/值对数目
  • Keys属性——键的集合
  • Values属性——值的集合

队列集合类型

  • Queue类和Queue泛型类表示对象的先进先出集合

  • 存储在Queue中的对象在一端(Queue 的结尾处)插入,从另一端(Queue的开始处)移除

在这里插入图片描述

堆栈集合类型

Stack类和Stack泛型类表示对象的简单的后进先出非泛型集合
Stack采用循环缓冲区方式实现对象的增删

在这里插入图片描述

散列集合

  • HashSet泛型类
  • set 集合,实现 ICollection 接口和 ICollection泛型接口
  • 集是一组不重复出现且无特定顺序的元素、

用于集合运算的方法:

UnionWith(并集)
IntersectWith(交集)
ExceptWith(差集)
SymmetricExceptWith(对称差集)

用于测试集合的方法:

IsProperSubsetOf、IsProperSupersetOf、IsSubsetOf、IsSupersetOf、Overlaps和SetEquals

位集合

元素为位标志的集合,其元素都是一位,而不是一个对象

BitArray 类

  • 管理位值的压缩数组,其容量可通过Length属性来控制
  • 使用一个整数索引(始于0)访问此集合中的元素
  • 设置/获取指定索引位置的值方法Set和SetAll/Get
  • 筛选运算的方法:And,Or,Xor和Not

BitVector32类

  • 值类型,在堆栈上分配;而BitArray 是引用类型,在堆上分配
  • 性能更高

专用集合

NameValueCollection、StringDictionary和 StringCollection 等特殊用途的集合

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...