C# 数据结构集合类总结

1、简单的命名空间:

(1)Array、EnumString、Obj等:引入命名空间:using System;

(2)ArrayList、HashTable等: 引入命名空间: using System.Collections

(3)List<T>、Queue<T>: 引入命名空间:using System.Collections.Generic;

2、最长用的集合类进行简单的总结:{

非范型的基本已经不用了

ArraryList 后来被List<T>替代。

HashTable 后来被Dictionary<TKey,TValue>替代。 

Queue 后来被Queue<T>替代。 

SortedList 后来被SortedList<T>替代。 

Stack 后来被Stack<T>替代。

}

集合

说明

List<T>、LinkedList<T>、SortedList<T>

可以像数组一样按索引访问列表,但提供了其他方法来搜索和排序;

双向有序列表,为任何一端的插入和删除进行了优化,这种集合既可作为队列,也可作为栈,还支持列表那样的随机访问;

键/值对的有序列表,键必须实现Icomparable<T>接口;

Queue<T>

先入先出数据结构,提供了方法将数据项添加到队列的一段,从另一端删除项,以及只检查不删除

Stack<T>

先入后出数据结构,提供了方法将数据压入栈顶,从栈顶出栈,以及只检查栈顶的项而不删除

HashSet<T>、SortedSet<T>

无序值列表,为快速数据获取而优化,提供了面向集合的方法来判断它容纳的项是不是另一个HashSet<T> 对象中的项的子集,以及计算不同HashSet<T> 对象的交集和并集;

有序Set,键必须实现Icomparable<T>接口

Dictionary<TKey,TValue>、SortedDictionary<TKey, TValue>

字典集合根据键而不是索引来获取值

 

 

在SortedList中,键和值分别保存在一个数组中,当向Sorted添加一个元素时,SortedList类添加一个元素时,SortedList会首先对key进行排序,然后根据排序结果计算出要插入到集合中的位置索引,再分别将key和value插入到各自数组的指定索引位置。

 

 Queue、Stack的一些重要特性。

  1、Queue先进先出、Stack后进先出

  2、可以添加null值到集合中

  3、允许集合中的元素重复

  4、Queue、Stack容量会按需自动添加

 

下面是各种常见集合类的定义:

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Array : ICloneable, IList, ICollection, 
	IEnumerable, IStructuralComparable, IStructuralEquatable

[SerializableAttribute]
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, 
	IEnumerable, IList, ICollection, IReadOnlyList<T>, IReadOnlyCollection<T>


[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Queue<T> : IEnumerable<T>, IEnumerable, ICollection, 
	IReadOnlyCollection<T>


[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Stack<T> : IEnumerable<T>, IEnumerable, ICollection, 
	IReadOnlyCollection<T>

[SerializableAttribute]
[ComVisibleAttribute(false)]
public class LinkedList<T> : ICollection<T>, IEnumerable<T>, 
	IEnumerable, ICollection, IReadOnlyCollection<T>, ISerializable, 
	IDeserializationCallback

[SerializableAttribute]
[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public class HashSet<T> : ICollection<T>, IEnumerable<T>, IEnumerable, 
	ISerializable, IDeserializationCallback, ISet<T>, IReadOnlyCollection<T>

[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Dictionary<TKey, TValue> : IDictionary<TKey, TValue>, 
	ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, 
	IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>, 
	IReadOnlyCollection<KeyValuePair<TKey, TValue>>, ISerializable, 
	IDeserializationCallback

[SerializableAttribute]
[ComVisibleAttribute(false)]
public class SortedList<TKey, TValue> : IDictionary<TKey, TValue>, 
	ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, 
	IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>, 
	IReadOnlyCollection<KeyValuePair<TKey, TValue>>

3、非泛型和泛型集合的接口

IDictionary、IList接口--继承-> ICollection --继承-> IEnumerable接口(GetEnumerator方法)

 

IDictionary接口是键/值对接口,它的实现如HashTable类而IList是值的集合,其成员可通过索引访问,如ArrayList类

非泛型集合接口

泛型集合接口

说明

ICollection 

ICollection<T>

定义所有集合的大小(Count),枚举器(foreach)和同步(copyto)方法,继承自IEnumerable

IList

IList<T>

表示可按照索引单独访问的一组对象(像数组一样)

IDictionary

IDictionary<T>

表示键/值对的集合

IComparer

IComparer<T>

定义类型为比较两个对象而实现的方法

IEqualityComparer

IEqualityComparer<T>

定义方法以支持对象的相等比较

IEnumerable

IEnumerable<T>

公开枚举器。实现了该接口意味着允许foreach语句循环访问集合中的元素

IEnumerator

IEnumerator<T>

支持在泛型集合上进行简单迭代

IEnumerable接口非常简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象(Current属性,MoveNext和Reset两个方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值