当前位置: 首页 > 工具软件 > sharp > 使用案例 >

C sharp 集合

子车灿
2023-12-01

各种集合

        集合可分为两类:泛型集合非泛型集合

                泛型集合使用之前要先引入一个命名空间

                        System.Collections.Generic

                非泛型集合使用之前要先引入一个命名空间

                        System.Collections

                 此外也有另一些有用的集合要引入别的命名空间
                        System.Collections.Specialized

        ArrayList

        //  实例化动态数组
        ArrayList score = new ArrayList();

        //  向动态数组中添加元素
        score.Add(90);
        score.Add(85.5f);
        score.Add("English:100");


        //  向动态数组中批量添加元素
        int[] array = { 90, 80, 70 };
        score.AddRange(array);

        //  向动态数组中插入元素
        score.Insert(2, "Math:80.5f");

        //  删除动态数组中的元素
        score.Remove(85.5f);
        //  删除的是单个元素,如果动态数组中没有该元素,就忽略
        score.Remove(90);
        score.Remove(90);
        //  根据下标移除动态数组中的元素
        score.RemoveAt(0);
        score.RemoveAt(1);

        score.AddRange(new string[] { "A", "B", "C", "A" });

        //  批量删除元素
        score.RemoveRange(2,3);

        //  如果数组中没有该下标所对应的元素,也会出现数组越界
        Console.WriteLine(score[1]);

        score[0] = "Math:80";

        //  数组元素反转
        score.Reverse();

        //  一般想要删除某个元素,会先进行判断是否存在
        bool containsA =  score.Contains("A");
        //  判断数组中是否包含某个元素
        Console.WriteLine("containsA:"+containsA);

        if (score.Contains("A"))
        {
            score.Remove("A");
        }

        //  动态数组长度
        Console.WriteLine("Count:"+score.Count);

        //  给一个元素的值,查该值在动态数组中的下标
        Console.WriteLine("IndexOf:"+score.IndexOf(970));

        score.Clear();

        score.AddRange(new float[] { 1.1f,5.7f,4.5f,9.8f,3,2,1 });

        //  从小到大排序
        score.Sort();

        //  清空动态数组
        //score.Clear();

        Console.WriteLine("-------------------");

        for (int i = 0; i < score.Count; i++)
        {
            Console.WriteLine(score[i]);
        }

        Console.WriteLine("--------------------");

        foreach (var item in score)
        {
            Console.WriteLine(item);
        }

                 Sort

                        动态数组从大到小排序有两种方法

                                第一种

                                        就是先Sort() 排序一遍后面再用反转 Reverse()

                                第二种

                                        使用Sort的第二个重载 IComparer(接口)

class NumberSort : IComparer
 {
    public int Compare(object x, object y)
    {
        int a = (int)x; //  2
        int b = (int)y; //  3
        if (a>b)
        {
            return -1;
        }
        else if (a < b)
        {
            //  a的索引编号变大了0   -->  1
            //  b的索引编号变小了1   -->  0   
            return 1;   
        }
        else
        {
            return 0;
        }
            }
                }

 类似资料: