• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C#各类集合汇总

c# 搞代码 4年前 (2022-01-09) 14次浏览 已收录 0个评论

集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。

平常在工作中List<T>集合是用的最多的,其次是Array(数组).今天整理一下各类形式的集合,不用就容易忘,必须要记录一下.

Array

Array:在内存上是连续分配的(可定义长度,也可不定义长度),Array中的元素类型要一样。

Array通过坐标(索引)访问,读取、修改快—增删慢

如果Array定义了长度,数据项就不能超过Array中的长度范围.

ArrayList

ArrayList:不定长度的,连续分配的

//元素没有类型限制 任何元素都当成object处理,如果是值类型会有装箱操作
ArrayList arrayList = new ArrayList();
arrayList.Add("object");//可以放string
arrayList.Add(Enumerable.Range(1,100).ToArray());//可以放Array
Func<string, int> func = m => 1;
arrayList.Add(func);//可以放Delegate
//移除数据
arrayList.RemoveAt(0);//通过索引坐标移除
arrayList.Remove("object");//匹配第一个元素值,满足就移除

List

List:也是Array,内存上都是连续摆放的;不定长;泛型,保证类型安全,避免装箱拆箱(都是统一的类型)

var list = new List<int>() { 1, 2, 3 };
list.Add(1);
list.AddRange(new List<int> { 4, 5, 6 });//批量添加
list.Any();//判断是否有数据
list.Clear();//清除所有数据
list.ForEach((m) => { });//foreach循环,参数=>viod委托
list.Skip(1).Take(2);//取索引为0之后的两条数据
//... ...

以上三种都属于Array类型,只要是Array类型都是读取快(可通过索引访问),增删慢.

LinkedList

LinkedList:双向链表 元素不连续分配,每个元素都有记录前后节点。

//在头部和尾部都标识了上一个元素和下一个元素所处位置
LinkedList<int> list = new LinkedList<int>();
list.AddLast(1);
list.AddFirst(1);
bool isBool = list.Contains(1);//判断链表中是否有1这个元素

LinkedListNode<int> list1 = list.Find(123);//找到元素123的这个节点
list.AddBefore(list1, 0);//前面增加
list.AddAfter(list1, 0);//后面增加

list.Remove(1);
list.Remove(list1);//根据节点删除
list.RemoveFirst();
list.RemoveLast();
list.Clear();

链表不能通过元素索引访问。找元素只能遍历。增删比较快,增加或删除,只需把这个元素的前后两个元素指向的元素节点改一下。

Queue

Queue 队列,就是链表  先进先出

//用处;放任务延迟执行 A不断写入任务,B不断获取任务执行 每次拿最近的一个任务
Queue<string> queue = new Queue<string>();
queue.Enqueue("object");//添加数据
queue.Enqueue("object1");
foreach (var item in queue)
{
 Console.WriteLine(item);
}
queue.Dequeue(<a style="color:transparent">来@源gao*daima.com搞@代#码网</a>);//获取最先进入队列的元素,获得并移除
queue.Peek();//获取但不移除

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C#各类集合汇总

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址