zoukankan      html  css  js  c++  java
  • 集合简单总结 ArrayList、List、Hashtable、Dictionary

     

    ============================ 集合综述 ==============================

    1、什么是泛型: 泛型就是限制了操作类型,意思如下:
               
                计算机中经常用到一些数据结构,如队列,链表等,而其中的元素以前一般这么定义:object a=new object();
                用object来表示元素带来一个严重的问题,每次拆箱、封箱占用了大量的计算机资源,导致程序性能低下,
                而泛型就是在编译阶段就告诉编译器,数据结构中元素的种类,既然编译器知道了元素的种类,
                自然就避免了拆箱、封箱的操作,从而显著提高c#程序的性能。
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    ArrayList、Hashtable,不是泛型集合,所以添加到他们对象里面的元素都将隐式地向上强制转换为 Object,
                          则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作,降低了相率
    List、Dictionary是泛型集合,就不会存在这种现象
    List 是 ArrayList 对应的泛型集合,他们相当于特殊的数组
    Dictionary 是 Hashtable对应的泛型集合,他们存储的是键值对
    ========================== ArrayList ============================
    ArrayList 典型示例代码。。。。。。。。。。。。。。。。。。。。。。。。。 
    为 ArrayList  添加不同类型的元素,然后遍历这些值
             static void Main(string[] args)
             {
                int []num=new int[]{12,4,56,87,8765};
                ArrayList arrayList = new ArrayList();
                arrayList.Add("老马");
                arrayList.Add("老苏");
                arrayList.Add(45.5);
                arrayList.Add(100);
                arrayList.Add(true);
                arrayList.Add(49.34m);
                arrayList.Add('女');
                arrayList.Add(num);
                arrayList.AddRange(num);
                arrayList.Add(new Person("老牛", '女', 74));
                for (int i = 0; i < arrayList.Count; i++)
                {
                    Console.WriteLine(arrayList[i]);
                    if (arrayList[i] is Person)                   //遍历其中的对象
                    {
                        ((Person)arrayList[i]).Show();
                        Console.WriteLine(((Person)arrayList[i]).Name);
                        Console.WriteLine(((Person)arrayList[i]).Age);
                        Console.WriteLine(((Person)arrayList[i]).Gender);
                    }
                    if (arrayList[i] is int[])                       //遍历其中的整形数组
                    {
                        int []numbers=(int[])arrayList[i];
                        for (int j = 0; j < numbers.Length; j++)
                        {
                            Console.WriteLine(numbers[j]);
                        }
                    }
                }
                Console.ReadKey();
             }
    ArrayList 常用方法、属性 总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    arrayList.Count;
    arrayList.AddRange(num);    arrayList.Add(num);   注:两者的区别
    arrayList.Clear();
    bool result=arrayList.Contains('女');
    arrayList.Remove("牛牛");   移除牛牛,如果该项不存在,不报错
    arrayList.RemoveAt(3);       移除下标为3的元素
    arrayList.Reverse(2,3);    顺序反转
    =========================== Hashtable ================================
    Hashtable  典型代码 1。。。。。。。。。。。。。。。。。。。。。。。
    static void Main(string[] args)
            {
                ht.Add(4, "老苏");
                ht.Add(9,"王二麻子");
                ht.Add("2","打酱油的");
                ht.Add(6,"赵六");
                ht.Add(7,"老苏");
                ht.Add(5,"哈哈");
                ht.Add(8,"呵呵");
                ht.Add("怎么的","把我也放进去");
                foreach (var key in ht.Keys)       //当键是不同数据类型时,用var表示
                {
                    Console.WriteLine(ht[key]);
                }
                Console.ReadKey();
            }
    Hashtable  典型代码 2 。。。。。。。。。。。。。。。。。。
    static void Main(string[] args)
            {
                Hashtable ht = new Hashtable();
                ht.Add("张三", 1000);
                ht.Add("李四", 1010);
                ht.Add("王五", 1012);
                foreach (string item in ht.Keys)        //当键的类型一致时,就使用当前类型代替var
                {
                    Console.WriteLine("key是{0},value是{1}",item,ht[item]);
                }
                Console.ReadKey();
            }
    Hashtable  常用方法 。。。。。。。。。。。。。。。。。。
    Add   将带有指定键和值的元素添加到 Hashtable 中。
     
    Clear    从 Hashtable 中移除所有元素。
     
    Contains      ContainsKey          两个方法一样   确定 Hashtable 是否包含特定键。
     
    ContainsValue           确定 Hashtable 是否包含特定值。 
    Remove       从 Hashtable 中移除带有指定键的元素。 
    ============================= List ==================================
    List 典型示例代码 。。。。。。。。。。。。。。。。。。。。
    class Program
        {
            static void Main(string[] args)
            {
                int[] nums = new int[] { 12,4,53,5,32};
                List<int> list = new List<int>();
                list.Add(1);
                for (int i = 0; i < 100; i++)
                {
                    list.Add(i);
                }
                list.AddRange(nums);         //  添加数组
                
                for (int i = 0; i < list.Count; i++)         //遍历 List
                {
                    Console.WriteLine(list[i]);
                }
                
                Console.WriteLine(list.Max());                   //聚集函数的应用
                Console.WriteLine(list.Min());
                Console.WriteLine(list.Sum());
                Console.WriteLine(list.Average());
                
                Console.ReadKey();
            }
        }
    ========================== Dictionary ============================
    static void Main(string[] args)
            {
                Dictionary<string, string> dic = new Dictionary<string, string>();
                dic.Add("老牛", "吃草");
                dic.Add("老马","吃嫩草");
                dic.Add("老蒋", "吃肉");
                dic.Add("老杨", "吃素");
                dic.Add("老王","吃辣椒");
                dic.Add("老苏","吃面条");
                dic.Add("小杨","吃豆腐");
                
                foreach (string item in dic.Keys)
                {
                    Console.WriteLine("key是{0},value是{1}",item,dic[item]);
                }
                
                Console.ReadKey();
            }
  • 相关阅读:
    在 Java 中遍历 HashMap 的5种最佳方式
    Java 8 Stream.reduce() 使用示例
    Redis 为什么这么快?
    java8 常用代码
    为什么我们越娱乐反而会越无聊?
    Arrays.sort() VS Arrays.parallelSort()
    Java中枚举类型Enum的一种使用方式
    An illegal reflective access operation has occurred
    多线程中常见锁概述
    Java中创建多线程的三种方式
  • 原文地址:https://www.cnblogs.com/key1309/p/3153092.html
Copyright © 2011-2022 走看看