【塔 · 第 一 条 约 定】

【 塔 · 第 一 条 约 定 】//内容大部分参照网络而整理,有些无法判断正误。

1、整理c#:Array Arraylist List Hashtable Dictionary Stack Queue等
==>数组Array:
        int[] a;//初始化数组;
        a=new int[3];
        a=new int[3]{1,2,3};
        a=new int[]{1,2,3};//开辟新空间,赋值
==>动态数组ArrayList:(容量不定)
        1)Add()向数组中添加一个元素, 
        2)Remove()删除数组中的一个元素 
        3)RemoveAt(int i)删除数组中索引值为i的元素 
        4)Reverse()反转数组的元素 
        5)Sort()以从小到大的顺序排列数组的元素 
        6)Clone()复制一个数组 
       
        ArrayList a=new ArrayList();//定义
        a.Add(1);//单个添加
       
        int[] numbers=new int[2]{1,2};
        a.AddRange(numbers)//将数组numbers中所有元素添加到a中;
        a.Remove(2);//移除值为2的元素
        a.RemoveAt(2);//移除第二个元素
        ArrayList a1=new ArrayList(a.GetRange(1,2));//新的ArrayList a1只取a中的一部分元素
        Console.WriteLine(a.Sort());//从小到大输出a中元素
        Console.WriteLine(a.Reverse());//反序输出a中所有元素
        ArrayList b=new ArrayList();
        b=a.Clone();//将a克隆到b
==>强类型列表List(可通过索引访问对象)
        List nums=new List();//声明一个List对象,其中T为int,string等类型名
        让类型名为int
        nums.Add(1);//加入一个元素
        nums.Insert(2,3);//往第二个位置加入元素3
        nums.Remove(1)//移除指定元素
==>Dictionary:表示键和值的集合。其遍历输出的顺序就是加入的顺序。
   常用属性:
       1)Comparer:获取Directionary中的键是否相等的IEqualityComparer(判断,返回true或false)
       2)Count:获取包含在Dictionary中的键/值对的数目
       3)Item:获取或设置与制定的键相关联的值
       4)Keys:获取包含Dictionary中的键的集合
       5)Values:获取包含Dictionary中值得集合
    常用方法:
       1)Add:将制定的键和值添加到Dictionary中
       2)Clear:从Dictionary中移除所有的键和值
       3)ContainsKey:确定Dictionary中是否包含指定的键
       4)ContainsValue:确定Dictionary中是否包含特定的值
       5)Equals:已重载,确定两个Object实例是否相等
       6)GetEnumerator:返回循环访问Dictionary的枚举数
       7)GetHashCode:用作特定类型的哈希函数。GetHashCode适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object继承。) 
       8)GetObjectData :实现 System.Runtime.Serialization.ISerializable接口,并返回序列化 Dictionary实例所需的数据。
       9)GetType :获取当前实例的 Type。 (从 Object继承。) 
      10)OnDeserialization :实现 System.Runtime.Serialization.ISerializable接口,并在完成反序列化之后引发反序列化事件。
      11)ReferenceEquals :确定指定的 Object实例是否是相同的实例。 (从 Object继承。) 
      12)Remove :从 Dictionary中移除所指定的键的值。
      13)ToString: 返回表示当前 Object的 String。 (从 Object继承。)
      14)TryGetValue :获取与指定的键相关联的值
      
       Dictionary my=new Dictionary();
       my.Add("aaa","111");
       my.Add("bbb","222");//添加键,且不可重复,否则会抛异常.前一个是建,后一个是值,值可以是数组和类
       try
       {
             my.Add("aaa","111");
        }
        catch(ArgumentException ex)
       {
            Console.WriteLine("此键已存在+ex.Messege");
       }//捕捉异常,输出异常信息

==>Hashtable类:哈希表。类似于Directionary。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。 
       GetHashCode()方法返回一个int型数据,使用这个键的值生成该int型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。
       Hashtable 和 Dictionary 类型
       1)单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
       2)多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
       3)Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.
        HashTable中的key/value均为object类型,由包含集合元素的存储桶组成。存储桶是 HashTable中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,存储桶可令搜索和检索更为便捷。每一存储桶都与一个哈希代码关联,该哈希代码是使用哈希函数生成的并基于该元素的键。HashTable的优点就在于其索引的方式,速度非常快。如果以任意类型键值访问其中元素会快于其他集合,特别是当数据量特别大的时候,效率差别尤其大。
        HashTable的应用场合有:做对象缓存,树递归算法的替代,和各种需提升效率的场合。
      
        System.Collections.Hashtable ht = new System.Collections.Hashtable(); //声明
        ht.Add(1, "apple");
        ht.Add(2, "banana");
        ht.Add(3, "orange"); //键不可重复和空

HashTable是经过优化的,访问下标的对象先散列过,所以内部是无序散列的,保证了高效率,也就是说,其输出不是按照开始加入的顺序,而Dictionary遍历输出的顺序,就是加入的顺序,这点与Hashtable不同。

==>SortedList类:与哈希表类似,区别在SortedList中的Key数组是排好序的
         System.Collections.SortedList list=new System.Collections.SortedList(); 
         list.Add("key2",2); 
         list.Add("key1",1); 
         for(int i=0;i
        {
              System.Console.WriteLine(list.GetKey(i)); 
         }
==>Srack类,栈。后进先出。push方法入栈,pop方法出栈。
       System.Collections.Stack stack=new System.Collections.Stack(); 
       stack.Push(1); 
       stack.Push(2); 
       System.Console.WriteLine(stack.Peek()); 
       while(stack.Count>0) 
       {
            System.Console.WriteLine(stack.Pop());    
       } 
==>Queue类:队列,先进先出,enqueue方法入队列,dequeue放大出队列。
       System.Collections.Queue queue=new System.Collections.Queue(); 
       queue.Enqueue(1); 
       queue.Enqueue(2); 
       System.Console.WriteLine(queue.Peek()); 
       while(queue.Count>0) 
       {
              System.Console.WriteLine(queue.Dequeue());
        }

2、整理C#:for、foreach、while、switch等
==>for循环:与c,c++中方法类似
        int i,n=18;
        for(i=1;i
        {
            ......
         }
==>foreach,遍历
       foreach(int i int n)
      {
             ConSole.WriteLine(a[i]);
       }//输出数组a中0到n个元素
==>while
      while(判断条件)
     {
        ........
     }//当判断条件为真时,执行括号中语句
==>switch
     switch(state)
    {
        case 1:i=1;break;
        case 2:i=2;break;
        ......
        case n:i=n;break;
        default:i=0;break;
    }//判断state的值分别执行其对应分支的语句,末尾要加break以种植switch,若无一符合执行default后的语句

分享:
0

posted @ 2017-02-26 10:42  陈阿锦  阅读(126)  评论(0)    收藏  举报