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

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. codeforces 623A. Graph and String 构造

    题目链接 给出一个图, 每个节点只有三种情况, a,b, c. a能和a, b连边, b能和a, b, c,连边, c能和b, c连边, 且无重边以及自环.给出初始的连边情况, 判断这个图是否满足条件 ...

  2. 转:触屏中的js事件

    一.触摸事件 ontouchstartontouchmoveontouchendontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因此他们 ...

  3. TabSpec和TabHost实例

    TabSpec与TabHost TabHost相当于浏览器中浏览器分布的集合,而Tabspec则相当于浏览器中的每一个分页面.d在Android中,每一个TabSpec分布可以是一个组件,也可以是一个 ...

  4. 转: c++继承中的内存布局

    英文原文: http://www.openrce.org/articles/files/jangrayhood.pdf 翻译: http://blog.csdn.net/jiangyi711/arti ...

  5. NOIP2015

    现在来总结一下. 斗地主 这题的题目描述感觉不太清晰,当时有很多人去问,但都没有得到任何回应.好吧,虽然我也是似懂非懂,但是就算看清楚了题目又能怎么样呢. 首先这题只能够搜索吧,或者说是DP,不过有很 ...

  6. JAVA中IO和异常处理练习

    1.SystemI\O练习:1)通过键盘输入若干字符,并通过显示器输出:2)定义一个静态方法validOrNot()用于对输入的字符进行合法性校验,若包含非英文字符,则抛出IllegalStringE ...

  7. 一个轻client,多语言支持,去中心化,自己主动负载,可扩展的实时数据写服务的实现方案讨论

    背景 背景是设计一个实时数据接入的模块,负责接收client的实时数据写入(如日志流,点击流),数据支持直接下沉到HBase上(兴许提供HBase上的查询),或先持久化到Kafka里.方便兴许进行一些 ...

  8. HDU 5045 Contest(状压DP)

    Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...

  9. ceph之Placement Group

    预定义PG_NUM 新建一个存储池命令:ceph osd pool set {pool-name}  pg_num 选择一个pg_num的值是强制性的,这是因为该值不能被自动计算出来,以下是一些常用值 ...

  10. Linux下Django开发学习(一)

    一,环境配置: 环境:Ubuntu 14.04 LTS, Python 2.7,  Django 1.8 安装Python : Ubuntu自带python2.7,不用安装 安装pip:sudo ap ...