首页 > 代码库 > ArrayList集合&特殊集合

ArrayList集合&特殊集合

一、ArrayList集合 集合内可以放不同类型的元素

另:object类型为所有数据类型的基类

添加元素:.add();

清空集合:al.clear();

克隆集合:.clone();

判断是否包含某个元素:.contains();

获取第一次出现该元素的索引号:.indexof();

获取最后一次出现该元素的索引号:lastindexof();

移除第一个匹配元素:.Remove();

移除某个索引位置上的元素:.RemoveAt();

排序 升序:.sort();

翻转集合:.Reverse();

在有不同数据类型的时候需要遍历集合:用object foreach(object aa in ai )

暂停程序:System.Threading.Thread.Sleep(300); 括号内为毫秒

练习:

1.输入多个号码放到集合中 进行三秒钟的滚动抽奖

ArrayList al = new ArrayList();
            for (; ; )
            {
                Console.Write("请输入手机号码(如果要终止,请输入“完成”):");
                string a = Console.ReadLine();
                if (a == "完成")
                {
                    break;
                }
                al.Add(a);
            }
            Console.WriteLine("输入完毕,按回车键开始抽奖。");
            Console.ReadLine();
            Console.Clear();
            Random ran = new Random();
            for (int i = 0; i <= 30; i++)
            {
                int b = ran.Next(0, al.Count);
                Console.Clear();
                Console.Write(al[b]);
                System.Threading.Thread.Sleep(100);
            }

2.输入班级人数 姓名 语数英成绩 输出语文最高分 数学最低分 是谁考的 以及英语平均分

ArrayList al = new ArrayList();
            Console.Write("请输入班级人数:");
            int a = int.Parse(Console.ReadLine());
            for (int i = 0; i < a; i++)
            {
                Console.Write("请输入第{0}个人的姓名:", i + 1);
                al.Add(Console.ReadLine());
                Console.Write("请输入第{0}个人的语文成绩:", i + 1);
                al.Add(Console.ReadLine());
                Console.Write("请输入第{0}个人的数学成绩:", i + 1);
                al.Add(Console.ReadLine());
                Console.Write("请输入第{0}个人的英语成绩:", i + 1);
                al.Add(Console.ReadLine());
            }
            for (int i = 0; i < 4 * a - 4; i += 4)
            {
                for (int j = i + 4; j < 4 * a; j += 4)
                {
                    if (double.Parse(al[i + 1].ToString()) < double.Parse(al[j + 1].ToString()))
                    {
                        object zhong = al[i + 1];
                        al[i + 1] = al[j + 1];
                        al[j + 1] = zhong;
                        zhong = al[i];
                        al[i] = al[j];
                        al[j] = zhong;
                        zhong = al[i + 2];
                        al[i + 2] = al[j + 2];
                        al[j + 2] = zhong;
                        zhong = al[i + 3];
                        al[i + 3] = al[j + 3];
                        al[j + 3] = zhong;
                    }
                }
            }
            Console.Clear();
            Console.WriteLine("语文成绩最高分是{0},是{1}考的。", al[1], al[0]);
            for (int i = 0; i < 4 * a - 4; i += 4)
            {
                for (int j = i + 4; j < 4 * a; j += 4)
                {
                    if (double.Parse(al[i + 2].ToString()) > double.Parse(al[j + 2].ToString()))
                    {
                        object zhong = al[i + 1];
                        al[i + 1] = al[j + 1];
                        al[j + 1] = zhong;
                        zhong = al[i];
                        al[i] = al[j];
                        al[j] = zhong;
                        zhong = al[i + 2];
                        al[i + 2] = al[j + 2];
                        al[j + 2] = zhong;
                        zhong = al[i + 3];
                        al[i + 3] = al[j + 3];
                        al[j + 3] = zhong;
                    }
                }
            }
            Console.WriteLine("数学成绩最低分是{0},是{1}考的。", al[2], al[0]);
            double sum = 0;
            for (int i = 0; i < 4 * a; i += 4)
            {
                sum += double.Parse(al[i + 3].ToString());
            }
            Console.WriteLine("英语平均分是:{0}", sum / a);


二、特殊集合

1.stack集合 

也叫栈集合、干草堆集合 特点是先进后出 一个一个赋值 一个一个取值 按顺序

添加元素:.push();

弹出元素:.pop();弹出最后一个 并且弹出后 集合内不再有此元素

查看元素:.peek();只查看 不弹出

2.队列集合

queue 特点是先进先出 一个一个赋值 一个一个取值

添加元素:.enqueue();

移除一个元素:.dequeue();从头开始移除

3.哈希表集合

hashtable  哈希表 先进后出 一个一个赋值 但只能一起取值

添加元素:.add(,);一次添加两个元素 一个是key 一个是value

读取:

foreach (object aa in ht.Keys)//单纯的存储Key的集合
            {
                Console.WriteLine(aa);
            }
            foreach (object bb in ht.Values)
            {
                Console.WriteLine(bb);
            }

使用枚举类型进行读取,排列成表格:

IDictionaryEnumerator ide = ht.GetEnumerator();
            while (ide.MoveNext())
            {
                Console.WriteLine(ide.Key + "\t" + ide.Value);
            }

注:哈希表集合其实包含两个集合 一个是keys 一个是values


           

 

ArrayList集合&特殊集合