C# 集合

news/2025/2/23 2:31:48/

C# 集合

  • 集合
    • 集合接口和类型
    • 列表
    • 队列
    • 链表
    • 有序表
    • 字典
    • Loopup
    • HashSet
    • 位数组

集合

数组的大小是固定的。如果元素个数是动态的,就应使用集合类。List 和 ArrayList 是与数组相当的集合类。还有其他类型的集合:队列、栈、链表和字典。

集合接口和类型

集合类可以组合为集合,存储 Object 类型的元素和泛型集合类。
对象类型的集合位于 System.Collections 命名空间;泛型集合类位于 System.Collections. Generic
命名空间;专用于特定类型的集合类位于 System.Collections.Specialized 命名空间。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

列表

.NET Framework 为动态列表提供了类 ArrayList 和 List。。System.Collections.Generic 命名空间中的类 List的用法非常类似于 System.Collections 命名空间中的 ArrayList 类。
ArrayList objectList = new ArrayList();
List intList = new List();
List racers = new List();
intList.Add(1);
intList.Add(2);

队列

队列是其元素以先进先出(FIFO)的方式来处理的集合。在.NET 的 System.Collections 命名空间中有非泛型类 Queue,在 System.Collections.Generic 命名空间中有泛型类 Queue。这两个类的功能非常类似,但泛型类是强类型化的,定义了类型 T,而非泛型类基于 Object 类型。
在这里插入图片描述

栈是与队列非常类似的另一个容器,只是要使用不同的方法访问栈。最后添加到栈中的元素会最先读取。栈是一个后进先出(LIFO)容器。与 Queue 类相同,非泛型类 Statck 也执行了 ICollection、IEnumerable 和 ICloneable 接口;泛型类Statck实现了 IEnumerable、ICollection 和 IEnumerable 接口。用 Push()方法在栈中添加元素,用 Pop()方法获取最近添加的元素。
在这里插入图片描述
Stack alphabet = new Stack();
alphabet.Push(‘A’);
alphabet.Push(‘B’);

链表

LinkedList 集合类没有非泛型集合的类似版本。LinkedList 是一个双向链表,其元素指向它前面和后面的元素。

在这里插入图片描述

有序表

如果需要排好序的表,可以使用 SortedList<TKey, TValue>。这个类按照键给元素排序。
在这里插入图片描述
在这里插入图片描述

字典

字典表示一种非常复杂的数据结构,这种数据结构允许按照某个键来访问元素。字典也称为映射或散列表。字典的主要特性是能根据键快速查找值。也可以自由添加和删除元素,这有点像List,但没有在内存中移动后续元素的性能开销。
创建一个新的 Dictionary<TKey, TValue>实例;
可以使用 Dictionary<TKey, TValue>类的索引器替代 TryGetValue()方法,来访问存储在字典中
的值;

Loopup

Dictionary<TKey, TValue>只为每个键支持一个值。新类 Lookup<TKey, TElement>是.NET 3.5 中新增的,它类似于 Dictionary<TKey, TValue>,但把键映射到一个值集上。这个类在程序集System.Core中实现,用 System.Linq 命名空间定义。
在这里插入图片描述

HashSet

System.Collections.Generic 命名空间中包含一个新的集合类:HashSet。这个集合类包含不重复项的无序列表。这种集合称为"集(set)"。
在这里插入图片描述

位数组

如果需要处理许多位,就可以使用类 BitArray 和结构 BitVector32。BitArray 位于命名空间System.Collections,BitVector32 位于命名空间 System.Collections.Specialized。这两种类型最重要的区别是,BitArray 可以重新设置大小,如果事先不知道需要的位数,就可以使用 BitArray,它可以包含非常多的位。BitVector32 是基于栈的,因此比较快。BitVector32 仅包含 32 位,存储在一个整数中。
在这里插入图片描述

static void DisplayBits(BitArray bits)
{foreach (bool bit in bits){Console.Write(bit ? 1 : 0);}
}BitArray bits1 = new BitArray(8);
bits1.SetAll(true);
bits1.Set(1, false);
bits1[5] = false;
bits1[7] = false;
Console.Write("initialized:");
DisplayBits(bits1);
Console.WriteLine();

http://www.ppmy.cn/news/1127987.html

相关文章

人工智能AI 全栈体系(七)

第一章 神经网络是如何实现的 神经网络不仅仅可以处理图像&#xff0c;同样也可以处理文本。由于处理图像讲起来比较形象&#xff0c;更容易理解&#xff0c;所以基本是以图像处理为例讲解的。 七、词向量 图像处理之所以讲起来比较形象&#xff0c;是因为图像的基本元素是像…

双文对比,在线纯文本文档差异比较 API 接口

双文对比&#xff0c;在线纯文本文档差异比较 API 接口 文本对比 API 接口说明&#xff1a; 调用地址&#xff1a;http://api.cuobiezi.net/article/diff/json_result 请求方式&#xff1a;POST 请求格式&#xff1a;json 请求参数&#xff1a; username: 用户名 content: 原文…

el-collapse 嵌套中 el-checkbox作为标题,选中复选框与el-tree联动

<el-drawertitle"应用授权":visible.sync"menuDrawer"><el-collapse accordion style"padding: 15px"><el-collapse-item v-for"item in platList"><template slot"title"><el-checkbox v-model…

vue3硅谷甄选02 | 封装svg组件 - axios二次封装

文章目录 vue3硅谷甄选02功能1&#xff1a;封装svg组件SVG图标配置svg封装成组件svg组件注册为全局组件自定义统一注册全局组件的插件自定义插件的原理插件的使用 app.use(plugin, [options]) 功能2&#xff1a;axios二次封装使用mock插件构造数据axios二次封装api接口统一管理…

vue之vuex

Vuex 是 Vue.js 的一个状态管理模式和库&#xff0c;为应用中的所有组件提供了一个集中式的存储管理&#xff0c;并提供了一种强大的方式来管理应用的状态。Vuex 包含以下核心概念&#xff1a; State&#xff1a;定义了应用的状态&#xff0c;类似于组件中的 data。 Getters&a…

已实现:关于富文本组件库vue2-editor的使用方法以及一些必要的注意事项,特别是设置完富文本以后的回显问题。以及在光标位置插入字符串等

前言 目前常见的基于vue的富文本编辑器有两个&#xff1a;“vue2-editor” 和 “vue-quill-editor” 都是用于Vue.js的富文本编辑器组件&#xff0c;它们具有一些共同的特点&#xff0c;但也有一些区别。 共同点&#xff1a; 1、富文本编辑功能&#xff1a; 两者都提供了富文…

PHP实现DFA算法,查找关键词

# 添加关键词 到全局字典dict里面 protected function addWord($strWord) {$len mb_strlen($strWord,UTF-8);$curNode &$this->dict;for ($index 0; $index < $len; $index) {$word mb_substr($strWord, $index, 1, UTF-8);if (!isset($curNode[$word])) {$curNo…

解决 MyBatis-Plus 中增加修改时,对应时间的更新问题

问题&#xff1a;在添加修改时&#xff0c;对应的 create_time 与 insert_time 不会随着添加修改而自动的更新时间 第一步&#xff1a;首先在对应的属性上&#xff0c;加上以下注解 如果只添加以下注解&#xff0c;在增加或者修改时&#xff0c;可能对应的 LocalDateTime 会出…