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

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();
        }

集合简单总结 ArrayList、List、Hashtable、Dictionary的更多相关文章

  1. 类 Array Arraylist List Hashtable Dictionary

    总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue  我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashT ...

  2. C# 集合类 Array,Arraylist,List,Hashtable,Dictionary...

    我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类.我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和 ...

  3. ArrayList、HashTable、List、Dictionary的演化及如何选择使用

    在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...

  4. C#基础课程之五集合(HashTable,Dictionary)

    HashTable例子: #region HashTable #region Add Hashtable hashTable = new Hashtable(); Hashtable hashTabl ...

  5. 泛型与非泛型集合类的区别及使用例程,包括ArrayList,Hashtable,List<T>,Dictionary<Tkey,Tvalue>,SortedList<Tkey,Tvalue>,Queue<T>,Stack<T>等

    泛型与非泛型集合类在C#程序中是非常重要的一个基础概念,这里列一个表来进行对比: 非泛型集合类 泛型集合类 描述 ArrayList List<T> 表示具有动态大小的对象数组 Hasht ...

  6. C#中集合ArrayList与Hashtable的使用

    C#中集合ArrayList与Hashtable的使用 http://blog.csdn.net/linukey/article/details/42506819 ArrayList: 一. 注意事项 ...

  7. .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化

    1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...

  8. Java集合简单解析

    一. Collection 1. List a. ArrayList b. Vector c. LinkedList 首先要对List的三种实现进行一个简单的异同比较: 同: *ArrayList和V ...

  9. Java 集合系列 11 hashmap 和 hashtable 的区别

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

随机推荐

  1. java中printf中用法详解

    目前printf支持以下格式: %c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 %% 输出百分号% printf的格式控制的 ...

  2. 查找最小的k个元素

    题目:输入n个整数,输出其中最小的k个. 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4. 两种思路,无非就是时间与空间的妥协. 限制空间的时候要对原数组进行排序, ...

  3. 转: 用css把图片转为灰色图

    小tip: 使用CSS将图片转换成黑白(灰色.置灰) by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.co ...

  4. QR Code 码

    一.QR Code码 由日本Denso公司于1994年9月研制的一种矩阵二维码符号,它除具有一维条码及其它二维条码所有的信息容量大.可靠性高.可表示汉字及图象多种文字信息.保密防伪性强等优点外,还具有 ...

  5. 有n个数(两两不同),对于这n个数的每个连续子序列,把其中最大的一个数标记一次,问最后每个数被标记次数

    今天在qq群了看到了这个题目,觉得用单调栈的解法挺好,可以在o(n)内搞定,特意记录下来 首先明确单调栈的含义: 栈是FILO的,栈的所有操作都是在栈顶进行. 单调性指的是当前栈中存储的元素是严格的递 ...

  6. Aqua Data Studio 查询结果中文乱码

    菜单条里[文件]-[选项]会弹出个选项对话框 然后选[一般]  在右边的[外观]以下找到[网格结果字体] 将字体类型改成宋体即可了 watermark/2/text/aHR0cDovL2Jsb2cuY ...

  7. 使用client对象模型回写SharePoint列表

    使用client对象模型回写SharePoint列表 client对象模型是一个有效的方式回写SharePoint列表. 1. 管理员身份打开VS,新建WPF应用程序SPWriteListApp,确保 ...

  8. 【转】URL和URI的区别

    [转]URL和URI的区别 译者:华科小涛:http://www.cnblogs.com/hust-ghtao/: 初学http协议,就被这两个相似的术语搞蒙了,查了很多资料,总算搞清楚了.(找资料还 ...

  9. BZOJ 3626: [LNOI2014]LCA( 树链剖分 + 离线 )

    说多了都是泪啊...调了这么久.. 离线可以搞 , 树链剖分就OK了... -------------------------------------------------------------- ...

  10. [转]apache的源码安装详细过程全纪录

    原文链接:http://www.jb51.net/article/59474.htm 文中  开机启动需要修改 而且特别麻烦 还的配置php   否则不认识php文件  郁闷!只能做参考了!