集合、泛型集合、字典、哈希表 总结

11 篇文章 0 订阅


一:ArrayList集合

1.  必须声明命名空间 usingsystem.collection

2.  可用与存储不同类型的数据

3.  读取数据时大都需要里氏转换

4.  常用方法

Add:添加数据

Insert:插入数据

Remove:删除索引对应的数据

Removerage:(index,length)从某个索引开始,移除长度为length的数据

Clear:清除集合,此时集合中不再有元素

Sort:排序

Reverse:反转

Count:集合的长度

【注意】

add():添加数据,如何添加的是个数组,则数组会作为一个元素添加到集合中

AddRange():如果添加的是个数组,则集合会添加与数组相同个数的元素

6.可以初始化容量,但实际添加数值时,可以超出这个范围

7.代码演示:

    class Program
    {
        static void Main(string[] args)
        {
            Person p=new Person("小王");
            int[]num=new int[]{1,2,3,4,5};
            ArrayList myAL=new ArrayList();
            myAL.Add(1); //添加int类型
            myAL.Add(2);
            myAL.Add("世界");//添加string类型
            myAL.Add(p);     //添加类
            myAL.AddRange(num);//添加数组
            myAL.Insert(3, "漂亮");//在索引3的前面加数据
            myAL.Remove(1);//从集合中移除指定对象1在集合中的第一个匹配项
            myAL.RemoveRange(1, 3);//从索引为1的位置开始,删除3个数据
            foreach(object value in myAL)
            {
                Console.WriteLine(value);
            }
            
            //myAL.Clear();          
            Console.WriteLine("集合中元素的个数为{0}",myAL.Count);
            Console.Read();
        }
    }
    public class  Person
    {
        private string name;
        public Person(string name)
        {
            this.name=name;
        }
    }

二:List泛型集合

1.不需要导入命名空间

2.存储相同指定类型的数据

3.常用方法

     方法和ArrayList集合的方法大致相同,但下面是List独有的方法:

    如果数据类型是int类型,可直接调用List本身具有的方法求最大值马max()、最小值min(),和sum()、平均值

4.代码演示:


            int[]num=new int[]{1,2,3,4,5};
            List<int> mylist = new List<int>();

            foreach(int n in num)
            {
                mylist.Add(n);
            }
            
            Console.WriteLine("最大值为{0}",mylist.Max());
            Console.WriteLine("最小值为{0}",mylist.Min());
            Console.WriteLine("和为{0}",mylist.Sum());
            Console.WriteLine("平均值为{0}",mylist.Average());

            Console.Read();


三:哈希表

1.使用前必须导入命名空间 using system.collections

2.键和值的数据类型不受限制

3.以键值对的形式存储,读时也是以键值对的形式读,key不能相同,key存储时也是无序的,

4.常用方法

Add(key,value):以键值对的形式添加

Remove(key):移除对应键的value

contains():判断是否存在该键

    class Program
    {
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            //添加的数据类型无限制
            ht.Add(1,"世界");
            ht.Add(2, "地球");
            ht.Add("one",1);
            ht.Add("two",2);
            ht.Add(new Person("小刘"),"帅气");
            ht.Remove("one");//移除对应键的值

            bool result=ht.Contains("one");//判断哈希表中是否有指定的键
            Console.WriteLine(result);

            //显示的顺序不一定是你写入的顺序
            foreach (object myht in ht.Values)
            {
                Console.WriteLine(myht);
            }

            Console.Read();
        }
    }
    class Person
    {
        private string name;
        public Person(string name)
        {
            this.name = name;
        }
    }
5.哈希表常用来干什么那,文字转换,下面是简繁体字转换
 
    class Program
    {
        //简体字
        private const String Jian = "啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安";
        //繁体字
        private const String HXW = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨咹";

        static void Main(string[] args)
        {
            //文章     
            //string text = "传智播客有个帅哥叫小杨,小杨很帅,很纯洁,是个著名的大帅哥。帅到什么程度呢,他每次讲课,总是引起一堆怀春少女或者半老徐娘的围观,搞得网络不畅通。后来他都不敢讲公开课了。后来就偷偷的在代码教育的论坛注册个号码讲公开课,可是一旦被发现,也是引来尖叫一片。那些女性朋友们觉得只是尖叫难以吸引小杨的注意,就想了一个办法——一天二十四小时的加小杨的QQ";
           
            string text = "世界这么大,幸好还有你,爱看看";
            Hashtable ht = new Hashtable();
            //将简体字添加到哈希表中
            for (int i = 0; i < text.Length;i++ )
            {
                ht.Add(Jian[i],HXW[i]);
            }
            //将简体字转换成繁体字
            for(int i=0;i<text.Length;i++)
            {
                if (ht.ContainsKey(text[i]))
                {
                    Console.Write(ht[text[i]]);
                }
                else
                {
                    Console.Write(text[i]);
                }
            }

            Console.Read();
        } 
    }

四:Dictory字典

1.不用导入命名空间

2.键的存储顺序是无序的

3.键和值的数据类型固定,需要自己指定

4.常用方法:

    方法和HashTable一样,

5.代码演示

            //键的类型为int,值的类型为string
            Dictionary<int, string> d = new Dictionary<int, string>();
            d.Add(1,"世界");
            d.Add(2,"真大");
            foreach (object myd in d.Values)
            {
                Console.Write(myd);
            }
            Console.Read();


【总结】

1.ArrayList和HashTable使用前都需要导入命名空间,List和Dictionary不需导入命名空间

2.都可用foreach循环,但用foreach循环,一旦开始循环,就无法停止了

3.方法都差不多,但List特有max,min,sum,average方法,不用自己在写代码去求了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值