C#入门学习——集合

AaaryList集合

ArrayList list = new ArrayList();

之前学习过数组,相比较于数组,集合有两个优点。

数组:长度不可变,且类型单一。

集合:长度可以任意改变,且类型随便。

            Person p = new Person();
            list.Add(p);

我们将一个对象输出到控制台,默认情况下,打印的就是这个对象所在的类的命名空间。

集合的方法

添加单个元素:list.Add();

添加数组或者集合:list.AddRange();

清空所有元素:list.Clear();

删除单个元素,写谁删谁:list.Remove();

根据下标删除元素:list.RemoveAt();

升序排列:list.Sort();

反转:list.Reverse();

插入单个元素:list.Insert(1,"插入的");

在指定位置插入集合:list.InsertRange(0,new string[] { "zs", "ls" });

判断是否包含某个指定的元素:list.Contains();

集合的长度

list.Count:表示这个集合中实际包含的元素的个数

list.Capcity:表示这个集合中可以包含的元素的个数

每次集合中实际包含的元素个数count,超过了可以包含的元素个数capcity的时候,集合就会向内存申请多开辟一倍的空间,来保证集合的长度一直够用。

集合练习

创建一个集合,里面添加一些数字,求平均值与和

            ArrayList list = new ArrayList();
            list.Add(1);
            list.Add(2);
            list.Add(3);
            list.Add(4);
            int sum = 0;
            for (int i = 0; i < list.Count; i++)
            {
                sum += (int)list[i];
            }
            Console.WriteLine("和是{0},平均值是{1}", sum, sum / list.Count);
            Console.ReadKey();

写一个长度为10的集合,要求在里面随机的存放10个数字(0-9),但是要求所有的数字不重复

            ArrayList list = new ArrayList();
            Random r = new Random();
            for (int i = 0; i < 10; i++)
            {
                int rNumber = r.Next(0, 10);
                if (!list.Contains(rNumber))
                {
                    list.Add(rNumber);
                }
                else
                {
                    i--;//一旦产生了重复的随机数,这次循环不算数
                }
            }
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }
            Console.ReadKey();

Hashtable(键值对)集合

Hashtable ht = new Hashtable();

 在键值对集合中,是根据键去找值的

键值对对象[键]=值;

**键值对集合中国,键必须是唯一的,值可以随意重复。

添加单个元素:ht.Add(键,值);

集合中没有这个键的时候可以这么添加数据

ht[6] = "zs";

如果有这个键,那么会干掉原来的值。

判断有无键:ht.ContainsKey();

清空所有元素:ht.Clear();

根据键移除:ht.Remove(键);

foreach循环

foreach(var item in ht.Key//value)

{

        Console.WriteLine("键是====={0}====值是{1}",item,ht[item]);

}

c#是一门强类型语言,在代码中必须明确的定义每一个变量的类型。

var:推断类型,根据变量的值判断变量类型,必须赋初始值,用的少。

简繁转换练习

    class Program
    {
        private const String Jian = "啊皑";
        private const String Fan = "啊皚";
        static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            for (int i = 0; i < Jian.Length; i++)
            {
                ht.Add(Jian[i], Fan[i]);
            }
            Console.WriteLine("请随便输入");
            string input = Console.ReadLine();
            for (int i = 0; i < input.Length; i++)//遍历用户输入的字符串,将每一个字符都转换成繁体字
            {
                if (ht.ContainsKey(input[i]))
                {
                    Console.Write(ht[input[i]]);
                }
                else
                {
                    Console.Write(input[i]);
                }
            }
            Console.ReadKey();
        }
    }

 List<>泛型集合

List<变量类型> 集合名 = new List<变量类型>;

 泛型集合用来存储相同类型的数据。

 List泛型集合可以转换为数组

int[] nums = list.ToArray();

数组转换成集合

List<int> list =nums.ToList();


 Dictionary<>字典集合

Dictionary<键类型,数据类型> 集合名 = new Dictionary<键类型,数据类型>();

这个集合是键值对集合的一种,专门用指定类型的键来存储指定类型的数据

取这个集合中的值同样使用foreach循环

            foreach (KeyValuePair<int,string> kv in dic)
            {
                Console.WriteLine("{0}----{1}", kv.Key,kv.Value);
            }
            Console.ReadKey();

 泛型集合和字典集合练习

将一个数组中的奇数放到一个集合中,再将偶数放到另一个集合中,
最终将两个集合合并为一个集合,并且奇数显示在左边,偶数在右边。

            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
            List<int> listone = new List<int>();
            List<int> listtwo = new List<int>();
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] % 2 == 0) //是偶数
                {
                    listtwo.Add(nums[i]);
                }
                else//是奇数
                {
                    listone.Add(nums[i]);
                }
            }
            listone.AddRange(listtwo);
            foreach (int item in listone)
            {
                Console.Write(item + "  ");
            }
            Console.ReadKey();

 提示用户输入一个字符串,通过foreach循环将用户输入的字符串赋值给一个字符数组

            Console.WriteLine("请输入一个字符串");
            string input = Console.ReadLine();
            char[] chs = new char[input.Length];
            int i = 0;
            foreach (var item in input)
            {
                chs[i] = item;
                i++;
            }
            foreach (var item in chs)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();

统计welcome to china 中每个字符出现的次数,不考虑大小写
字符---->出现的次数
键------>值 

            string str = "welcome to china";
            Dictionary<char, int> dic = new Dictionary<char, int>();
            for (int i = 0; i < str.Length; i++)
            {
                if(str[i]==' ')
                {
                    continue;
                }
                //如果dic已经包含了当前循环到的键,值加1
                if (dic.ContainsKey(str[i]))
                {
                    dic[str[i]]++;
                }
                else//这个集合中第一次出现这个键
                {
                    dic[str[i]] = 1;
                }
            }
            foreach (KeyValuePair<char,int> kv in dic)
            {
                Console.WriteLine("{0}出现了{1}次", kv.Key,kv.Value);
            }
            Console.ReadKey();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值