• C# 数组和集合(摘)


    数组(Array)

    声明方式:数据类型[维数]数组名 =new 数据类型

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                // 一维数组
                int[] a = new int[2];
                int[] b = new int[2] { 1, 2};
                // 二维数组
                int[,] c = new int[1, 2];
    
            }
    
    
        }
    }

    数组集合(ArrayList)

    声明  ArrayList a=new ArrayList();

    using System.Collections;
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                // 一维数组
                int[] a = new int[2];
                int[] b = new int[2] { 1, 2};
                // 二维数组
                int[,] c = new int[1, 2];
                // 动态 数组
                ArrayList d = new ArrayList();
            }

    添加

    • Add(a) 添加元素a到末尾;
    • Insert(b,a) 在位置b插入元素a;
    • InsertRange(b,a) 在位置b插入集合a;

    删除

    • Remove(a) 移除元素a;
    • RemoveAt(a) 移除位置a的元素;
    • RemoveRange(a,b) 移除位置a到位置b的元素;
    • Clear() 清空;

    排序 Sort();

    反转 Reverse();

    查找

    • IndexOf(a) 返回元素a的位置,没有则返回-1;
    • Contains(a) 检测是否含有元素a,返回true/false;

    输出元素

    static void Main(string[] args)
            {
                ArrayList a = new ArrayList();
                foreach (int i in a) Console.WriteLine(i); //不需要强制转换
                for (int i = 0; i < a.Count; i++) //与数组的Length不同
                {
                    int n = (int)al2[i]; //需要强制转换
                    Console.WriteLine(n);
                }
            }

     

    List类是ArrayList类的泛型等效类,它的大部分用法都与ArrayList相似。最大的区别就是在声明List集合时,我们需要同时声明List内元素的数据类型。

    不过,大部分情况下,List似乎比ArrayList更加安全和高效,原因在于ArrayList会把所有插入其中的数据作为object类型来处理,所以在用ArrayList处理数据时,很可能会出现类型不匹配的错误,并且装箱和拆箱的过程会带来很大的性能耗损。

    声明方式:

    list<数据类型> 集合名称 =new list<数据名称>();

    Hashtable

    简述:在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

    什么时候使用哈希表:

    (1)某些数据会被高频率查询
    (2)数据量大
    (3)查询字段包含字符串类型
    (4)数据类型不唯一

    哈希表的效率:System.Collections下的哈希表(Hashtable)和System.Collections.Generic下的字典(Dictionary)都可用作lookup table,添加数据时Hashtable快。频繁调用数据时Dictionary快。

    哈希表的内部是无序散列,也就是说,其输出不是按照开始加入的顺序,但这也保证了高效率。如果以任意类型键值访问其中元素会快于其他集合,特别是当数据量特别大的时候,效率差别尤其大。如果一定要排序HashTable输出,只能自己实现。

    声明:Hashtable a = new Hashtable();

    Add(a,b) 在哈希表中添加键值对; Clear() 清除哈希表中的键值对; Contains(a) 判断哈希表中是否含有键a; Remove(a) 删除哈希表中的键值对a; ToString(); 返回当前Object的string;

    Dictionary

    简述:Dictionary<string, string>是一个泛型

    他本身有集合的功能有时候可以把它看成数组

    他的结构是这样的:Dictionary<[key], [value]>

    他的特点是存入对象是需要与[key]值一一对应的存入该泛型

    通过某一个一定的[key]去找到对应的值。

    Dictionary与Hashtable类似,但是Dictionary遍历的顺序就是加入的顺序。

    声明:Dictionary<string, string> a = Dictionary<string, string>();

    Add(a,b) 在字典中添加键值对; Clear() 清除字典中的键值对; Contains<a,b> 判断字典中是否含有键值对; ContainsKey(a) 判断字典中是否含有键a; ContainsValue(a) 判断字典中是否含有值a; Remove(a) 删除哈希表中的键值对a;

    Stack

    后进先出。

    声明:Stack a = new Stack();

    Pop() 出栈; Push(a) 进栈; Count 获得栈包含的元素数; Peek() 获得栈顶元素; Contain(a) 判断栈中是否含有元素a; Clear() 清除栈; ToArray() 将栈复制到数组;

    反思 空杯 担当
  • 相关阅读:
    90. 子集 II
    274. H 指数
    1291. 顺次数
    StreamWriter 跟BinaryWriter的区别
    非常有用的正则表达式
    linux菜单恢复
    VS2008的诡异问题
    一些常用算法 练手的的代码
    string 类型为空的处理方法
    left jion 的多表连接用法。
  • 原文地址:https://www.cnblogs.com/oralig/p/7694275.html
Copyright © 2020-2023  润新知