• .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);
    }
  • 相关阅读:
    harbor1.9仓库同步迁移
    接口强制删除namespace 为Terminating的方法
    k8s 命令自动补全
    docker harbor 搭建&配置http/https 方法
    docker harbor 清理释放存储空间
    强化学习系列
    Kaggle的Outbrain点击预测比赛分析
    talkingdata比赛分析
    keras模型总结
    深度神经网络多任务学习(Multi-Task Learning in Deep Neural Networks)
  • 原文地址:https://www.cnblogs.com/xqhppt/p/2178101.html
Copyright © 2020-2023  润新知