.Net集合类

1 集合

  1.1 Array
       大小固定,Array 类是支持数组的语言实现的基类。但是,只有系统和编译器能够从 Array 类显式派生。用户应当使用由语言提供的数组构造。

  1.2 ArrayList

    大小可变,元素是object类型

  1.3 List<T>

    泛型集合不会发生装箱拆箱行为

    性能:Array优于ArrayList,因为ArrayList元素是object类型,所以会发生装箱和拆箱行为

    1000万条测试代码:

            Stopwatch s1 = new Stopwatch();
            s1.Start();

            int[] a = new int[10000000];
            for (int i = 0; i < 10000000; i++)
            {
                a[i] = i;
            }

            s1.Stop();
            Console.WriteLine("{0}毫秒", s1.ElapsedMilliseconds);

            s1.Start();
            ArrayList b = new ArrayList();
            for (int i = 0; i < 10000000; i++)
            {
                b.Add(i);
            }
            s1.Stop();
            Console.WriteLine("{0}毫秒", s1.ElapsedMilliseconds);

2 队列

  2.1Queue和Queue<T>

    先进先出的集合

    示例代码

        Queue q = new Queue();
        q.Enqueue("a");
        q.Enqueue("b");
        q.Dequeue();
        q.Enqueue("c");

        PrintQueue(q);
        Console.WriteLine(q.Peek());

        private static void PrintQueue(IEnumerable a)
        {
            foreach (object obj in a)
            {
                Console.WriteLine(obj);
            }
        }

3 栈

  3.1 栈Stack和Stack<T>

    后进先出集合

    示例代码

            Stack a = new Stack();
            a.Push("a");
            a.Push("b");
            a.Pop();
            a.Push("c");
            
            Console.WriteLine(a.Peek());
            PrintQueue(a);

4 链表

  4.1 链表LinkedList<T>
    优点:插入元素快
    缺点:查找元素慢

    示例代码:

            LinkedList<int> a =new LinkedList<int>();
a.AddFirst(
1);
a.AddFirst(
2);
a.AddLast(
3);
LinkedListNode
<int> f1 = a.Find(2);
a.AddAfter(f1,
4);
a.AddLast(
4);

foreach (int i in a)
{
Console.WriteLine(i);
}

5 有序表

  5.1 SortedList和SortedList<TKey,TValue>

    表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。键不能重复

    示例代码:

            SortedList a = new SortedList();
            a.Add("a", 1);
            a.Add("b", 2);
            a.Add("c", 3);
            a.Add("e", 5);
            a.Add("d", 4);

            for (int i = 0; i < a.Count; i++)
            {
                Console.WriteLine("key:{0},value:{1}",a.GetKey(i),a.GetByIndex(i));
            }

            foreach (DictionaryEntry de in a)
            {
                Console.WriteLine("key:{0},value:{1}",de.Key,de.Value);
            }

6 字典

  6.1 Dictionary<TKey,TValue>和HashTable

    Dictionary性能优于HashTable,因为HashTable的元素是object类型,会发生装箱和拆箱行为

    示例代码:

            Dictionary<string, int> d =new Dictionary<string, int>();
d.Add(
"a", 1);
d.Add(
"c", 3);
d.Add(
"b", 2);

foreach (KeyValuePair<string, int> kv in d)
{
Console.WriteLine(
"key:{0},value:{1}", kv.Key, kv.Value);
}

Hashtable h
=new Hashtable();
h.Add(
"a", 11);
h.Add(
"b", 22);
h.Add(
"c", 33);

foreach (DictionaryEntry de in h)
{
Console.WriteLine(
"key:{0},value:{1}", de.Key, de.Value);
}
原文地址:https://www.cnblogs.com/xqhppt/p/2178101.html