C# 容器

C# 容器

  • 一、List<>
  • 二、LinkedList<>
  • 三、Dictionary<>
  • 四、HashTable
  • 五、Queue
  • 六、Stack
  • 七、HashSet<>

一、List<>

泛型容器,与C++的vector类似,是顺序结构而不是链式结构。

//声明一个List泛型集合的变量listNew
List<string> listNew=new List<string>();
1.Add()方法,添加元素的方法
2.Clear()方法,无返回值,清空集合中的所有元素
3.Contains()方法,返回布尔型数据,参数为集合中元素的数据类型
4.Equals()方法
5.Indexof()返回值为int,从索引位置0开始查找元素,并得到索引值
6.Insert()方法,插入元素
listNew.Insert(3,"三点五号元素");
7.Remove()方法,删除指定元素
8.RemoveAt()方法,根据索引位置删除元素
9.Reserve()方法,将集合中的所有元素反向排序
10.ToArray()方法,将集合转换为数组

二、LinkedList<>

C#中的泛型链表,与C++的list类似,是链式结构。

LinkedList<string> months = new LinkedList<string>();
         months.AddLast("March");
         months.AddFirst("January");
 
         var march = months.Find("March");
 
         months.AddBefore(march, "February");
         months.AddAfter(march, "April");

三、Dictionary<>

C#的泛型hash表

//定义
    Dictionary<string, string> openWith = new Dictionary<string, string>();
//添加元素
    openWith.Add("txt", "notepad.exe");
//取值
    Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
//更改值
    openWith["rtf"] = "winword.exe";
//遍历key
    foreach (string key in openWith.Keys)
    {
        Console.WriteLine("Key = {0}", key);
    }
//遍历字典
    foreach (KeyValuePair<string, string> kvp in openWith)
    {
        Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
    }
//删除元素
    openWith.Remove("doc");
常用属性

    名称    说明
    Comparer     获取用于确定字典中的键是否相等的 IEqualityComparer<T>。
    Count        获取包含在 Dictionary<TKey, TValue> 中的键/值对的数目。
    Item         获取或设置与指定的键相关联的值。
    Keys         获取包含 Dictionary<TKey, TValue> 中的键的集合。
    Values       获取包含 Dictionary<TKey, TValue> 中的值的集合。

常用方法
    名称    说明
    Add                 将指定的键和值添加到字典中。
    Clear               从 Dictionary<TKey, TValue> 中移除所有的键和值。
    ContainsKey         确定 Dictionary<TKey, TValue> 是否包含指定的键。
    ContainsValue       确定 Dictionary<TKey, TValue> 是否包含特定值。
    Equals(Object)      确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
    Finalize            允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
    GetEnumerator       返回循环访问 Dictionary<TKey, TValue> 的枚举器。
    GetHashCode         用作特定类型的哈希函数。 (继承自 Object。)
    GetObjectData       实现 System.Runtime.Serialization.ISerializable 接口,并返回序列化 Dictionary<TKey, TValue> 实例所需的数据。
    GetType             获取当前实例的 Type。 (继承自 Object。)
    MemberwiseClone     创建当前 Object 的浅表副本。 (继承自 Object。)
    OnDeserialization    实现 System.Runtime.Serialization.ISerializable 接口,并在完成反序列化之后引发反序列化事件。
    Remove              从 Dictionary<TKey, TValue> 中移除所指定的键的值。
    ToString            返回表示当前对象的字符串。 (继承自 Object。)
    TryGetValue         获取与指定的键相关联的值。

四、HashTable

C#的hash表,但键值对都是object类型,需要装箱和拆箱。利用Hashtable.Synchronized(Hashtable table)可使多线程安全。

五、Queue

C#的队列,可使用泛型也可以不使用。不使用泛型时,可利用Queue.Synchronized(new Queue())使多线程安全。

 Enqueue():在队列的末端添加元素

  Dequeue():在队列的头部读取和删除一个元素,注意,这里读取元素的同时也删除了这个元素。如果队列中不再有任何元素。就抛出异常

  Peek():在队列的头读取一个元素,但是不删除它

  Count:返回队列中的元素个数

  TrimExcess():重新设置队列的容量,因为调用Dequeue方法读取删除元素后不会重新设置队列的容量。

  Contains():确定某个元素是否在队列中

  CopyTo():把元素队列复制到一个已有的数组中

  ToArray():返回一个包含元素的新数组

六、Stack

C#的栈,可使用泛型也可以不使用。不使用泛型时,可利用Stack .Synchronized(new Stack ())使多线程安全。

//定义
private Stack<string> StaArray = new Stack<string>();
//压栈
StaArray.Push("张三");
//查栈
StaArray.Peek()
//出栈
StaArray.Pop()

七、HashSet<>

C#的hash集,是泛型,非线性结构.

你可能感兴趣的:(C#,C#,容器)