菜鸟学习之旅——四个小容器

 

看到这个标题,大家一定会感到很好奇,什么是小容器呢?为什么是四个呢?其实这里要给大家讲解的是c#里面的四个函数,这四个函数可以容纳不同类型的数据,拥有很强大的功能,接下来让我们走进去看一看,它们到底是什么呢?

第一个容器——Arraylist

一、优势:

1、可以容纳各种类型的数据,可以放int\string\char等等

2、不用定义它的大小

二、基本方法

arraylist.clear——清空

arraylist.contains(元素);——判断这个集合中是否包含这个元素,返回一个布尔值

arraylist.indexof(索引);——找某一个元素对应的索引

arraylist.insertRange(数字,数组);——往某一个索引位置插入一个数组

arraylist.Remove();——移除某个元素,只能移除一个

arraylist.RemoveAt(索引);——移除索引对应的值

arraylist.RemoveRange(数字,数字);——从指定索引处开始移除,移除多少个,如果超出索引报异常

举例:

求1到100的总和以及平均数,用集合的方法

            ArrayList arraylist = new ArrayList();
            int sum = 0;
            for(int i=1;i<=100; i++)
            {
                arraylist.Add(i);//往集合中添加数据
            }
            for(int i=0;i<arraylist.Count;i++)
            {
                if(arraylist[i] is int)
                {
                    sum += (int)arraylist[i];
                }
                
            }
            double avg = sum * 1.0 / arraylist.Count;

            Console.WriteLine("总和为{0},平均值为{1}", sum, avg);
            Console.ReadKey();

第二个容器——哈希表

特点:

1、哈希表的输出是无序的

2、哈希表的添加是以键值对的形式添加的,每一个键都对应一个value

3、添加的键不能重复

4、可以添加各种类型的键

5、可以用“键名[]”这个语法结构来显示键的value值

6、遍历用foreach

7、需要添加命名空间

举例:

            Hashtable ht = new Hashtable();
            //哈希表以键值对的形式存值  key----键  value------值
            ht.Add("老苏", "001");
            ht.Add("小马", 002);
            ht.Add(003, "老牛");

            ht.Add("小赵", "老马");
            //ht.Add("小赵", 122);//运行时会报异常,原因是上一句已经存在“小赵”这个键值了,所以不能重复添加了

            //显示   ht[]用来显示value的值 
            Console.WriteLine("{0}=========={1}", "老苏", ht["老苏"]);
           //遍历哈希表,将其中的内容全都显示出来
           foreach(var str in ht.Keys)
            {
                Console.WriteLine("key{0},------value{1}", str, ht[str]);
            }
            Console.WriteLine("添加成功了");            
            Console.ReadKey();

第三个容器——List

特点:

1、list内部只能放入已经实例化的类型,不能放入其他类型

2、可以求和、求最大值、求平均值

举例:随机的往这个list集合中添加10个数据,求和,求最大值,求平均值

            List<int> list = new List<int>();
            Random r = new Random();
            int num = 0;
            while(list.Count!=10)
            {
                num = r.Next(1, 100);
                if(!list.Contains(num))
                {
                    list.Add(num);
                }
            }
            Console.WriteLine("最小值为{0}", list.Min());
            Console.WriteLine("最大值为{0}", list.Max());
            Console.WriteLine("总和为{0}", list.Sum());
            Console.WriteLine("平均值为{0}", list.Average());
            Console.ReadKey();

第四个容器——Dictionary

特点:

1、用foreach遍历

2、添加数据也是以键值对的形式

具体的方法,请看下面的小栗子

  #region 拆字
        private const string ChaiZiZK = "卧臣卜 项工页  功工力 到至刂";
        #endregion
        static void Main(string[] args)
        {
            Dictionary<char, string> mydic = new Dictionary<char, string>();
            //切割拆字里面的空格
            string[] chaizi = ChaiZiZK.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            //遍历字典,并且判断拆字里面是否包含
            for(int i=0;i<chaizi.Length;i++)
            {
                if(!mydic.ContainsKey(chaizi[i][0]))
                {
                    mydic.Add(chaizi[i][0], chaizi[i].Substring(1));
                }
            }
            # region 文章
            string text = "传智博客有个帅哥叫小杨,小样很帅,很纯洁,是个著名的大帅哥。帅到什么程度呢,他每次讲课,总是引起一堆怀春少女";

            #endregion
            //遍历输出
            for(int i=0;i<text.Length;i++)
            {
                if(mydic.ContainsKey(text[i]))
                {
                    Console.Write(mydic[text[i]]);
                }
                else
                {
                    Console.Write(text[i]);
                }
            }
            Console.ReadKey();

四个容器之间的异同点:

1、Arraylist和list都可以添加数据,数据的个数不受限制

2、dictionary和list都不用导入命名空间,都确定了存数据的类型

3、dictionary和hashtable都是以键值对的形式存值,方法也都很相似

4、arraylist和hashtable都要导入命名空间,存的数据不限制类型

5、四个都可以用foreach遍历,存数据的个数都不受限制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值