AaaryList集合
之前学习过数组,相比较于数组,集合有两个优点。
数组:长度不可变,且类型单一。
集合:长度可以任意改变,且类型随便。
            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(键值对)集合
在键值对集合中,是根据键去找值的
键值对对象[键]=值;
**键值对集合中国,键必须是唯一的,值可以随意重复。
添加单个元素: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泛型集合可以转换为数组
int[] nums = list.ToArray();
数组转换成集合
List<int> list =nums.ToList();
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();










