集合及特殊字符

Posted 张凯::get("新技能")

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合及特殊字符相关的知识,希望对你有一定的参考价值。

 

集合里面 打印  出来时 要把 集合内的格式转化为其他格式!

壹.

集合 在.add之前 为空   数组  同样  添加元素之前 为  空(下一章超市购物例题具体体现)

1.System Collections命名空间包含接口和类,这些接口和类定义各种对象的集合;

2.集合与数组的区别;数组是连续的,同一类型的数据的一块区域,而集合是可以不连续的,多种数据类型的;

3.Arraylist实现了与  Ilist    ICollection   IEnumberable 接口

4.Arraylist是具体类,array是抽象类;

5.数组必须在实例化时指定元素数量,该数量一旦确定就不可更改,而ArrayList 当实例化一个arraylist 实例时可以不指定几何元素数(有默认的初始容量),当然你可以指定初始容量;

6.获取数组的元素数时使用length属性,而获取arraylist集合的元素数时使用Count属性;

5.数组可以有多维,而arraylist只能是一维。

贰:例题:

1.手机号抽奖   集合中存放字符串

 1             ArrayList TL = new ArrayList();--------与array区别  可以不指定元素数
 2             for (; ; )
 3             {
 4                 Console.WriteLine("输入手机号");
 5                 string a = Console.ReadLine();
 6                 if (a == "完成")
 7                 {
 8                     break;
 9                 }
10                 TL.Add(a);                         //每个索引对应 一个字符串   把字符串放在                                             数组里面!
11             }
12 
13             Console.WriteLine("回车键进行抽奖");
14             Console.ReadLine();
15             Console.Clear();
16 
17 
18             Random r = new Random();
19 
20             for (int j = 0; j < 3000; j += 100)
21             {
22                 int c = r.Next(TL.Count);
23 
24                 Console.Clear();
25                 Console.WriteLine(TL[c]);
26 
27                 System.Threading.Thread.Sleep(100); // ----------每隔100毫秒暂停一次
28             }
例题1

2.按着语文成绩排序      集合中存放 整数    以单 个的数 或者  字符串的形式存入集合  去的时候和 数组取差别不大 就是多了一步转化;object转为string再转其他;注意与后面结构体的区别

            Console.WriteLine("输入班级人数");
            int n = int.Parse(Console.ReadLine());

            ArrayList q = new ArrayList();
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("输入第{0}个人的姓名:", i + 1);
                q.Add(Console.ReadLine());
                Console.WriteLine("输入第{0}个人的语文成绩:", i + 1);
                q.Add(Console.ReadLine());
                Console.WriteLine("输入第{0}个人的数学成绩:", i + 1);
                q.Add(Console.ReadLine());
                Console.WriteLine("输入第{0}个人的英语成绩:", i + 1);
                q.Add(Console.ReadLine());
                Console.WriteLine();
            }
            Console.Clear();
            Console.WriteLine("按照语文成绩进行排序");
            Console.ReadLine();
            for (int i = 1; i < 4 * n - 3; i += 4)---------------------集合一维
            {
                for (int j = i + 4; j < 4 * n; j += 4)
                {
                    if (int.Parse(q[i].ToString()) < int.Parse(q[j].ToString()))//object转化为字符串在转化为其他(因为添加的字符串 添加后默认object)
                    {
                        object a;
                        a = q[i - 1];
                        q[i - 1] = q[j - 1];
                        q[j - 1] = a;

                        object b;
                        b = q[i + 1];
                        q[i + 1] = q[j + 1];
                        q[j + 1] = b;

                        object c;
                        c = q[i + 2];
                        q[i + 2] = q[j + 2];
                        q[j + 2] = c;

                    }

                }
            }

            foreach (object aa in q)
            {
                Console.WriteLine(aa);
            }

            Console.ReadLine();
              
用集合的方法(集合只能是一维的)

3.
初始化的 同类数据没有任何关系 【初始化的位置不同 】
将数组存入集合,再从集合取出打印;
班级人数, 姓名,性别,成绩。

Console.Write("输入班级人数");
            int a = int.Parse(Console.ReadLine());
            ArrayList zong = new ArrayList();

            for (int i = 0; i < a; i++)
            {
                string[] ren = new string[3];
                Console.Write("输入第{0}个人的姓名:", (i + 1));
                ren[0] = Console.ReadLine();
                Console.Write("输入第{0}个人的性别:", (i + 1));
                ren[1] = Console.ReadLine();
                Console.Write("输入第{0}个人的成绩:", (i + 1));
                ren[2] = Console.ReadLine();
                zong.Add(ren);                             //集合输入元素   输入数组类型
            }
            Console.Write("输入完毕:请按空格键打印");
            Console.ReadLine();
            for (int i = 0; i < zong.Count; i++)
            {
                string[] aaa = (String[])zong[i];   //集合  提取元素   提取 数组类型
                Console.WriteLine(aaa[0]+"  "+aaa[1]+"   "+aaa[2]);
            }
集合中存放数组 提取数组

4.Arraylist小知识点

            实例化    初始化
            ArrayList al = new ArrayList();-------不需指明元素容量
            //add方法才是真的添加
            al.Add(4);
            al.Add(6);
            al.Add(19);
            al.Add(4);
            al.Add(3);

            //在某个索引号上插入某个元素
            al.Insert(2,"Hello"); 
            个数
            Console.WriteLine(al.Count);
            al[0]这种赋值方式,仅仅适用于修改
            al[0] = 3;

            清空集合
            al.Clear();

            克隆集合
            ArrayList al1 = (ArrayList)al.Clone();

            判断是否包含某个元素
            bool a = al.Contains(3);
            Console.WriteLine(a);

            获取第一次出现该元素的索引号
            Console.WriteLine(al.IndexOf(4));

            获取最后一次出现该元素的索引号
            Console.WriteLine(al.LastIndexOf(4));

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

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

            Console.WriteLine(al[0]);
            数组的定义:数据类型    总长度

            遍历集合
            foreach(int aa in al)
            {
                Console.WriteLine(aa);
            }
            Console.WriteLine("--------------------------------------------");
            //排序   升序
            al.Sort();
            //遍历集合
            foreach (int aa in al)
            {
                Console.WriteLine(aa);
            }
            Console.WriteLine("--------------------------------------------");
            //排为降序
            //翻转集合
            al.Reverse();
            //遍历集合
            foreach (int aa in al)
            {
                Console.WriteLine(aa);
            }

            在有不同数据类型的时候需要遍历集合
            foreach(object aa in al)
            {
                Console.WriteLine(aa);
            }




            object         所有数据类型的基类
            int a = 5;
            object aa = a;
            aa = "string类型";
            aa = true;
            aa = DateTime.Parse("2008/8/8");
            aa = al;


            System.Threading.Thread.Sleep(3000);

            
小知识点

5.特殊集合

       1.     Stack   干草堆集合   栈集合
            一个一个赋值   一个一个取值
            先进后出
            实例化   初始化
            Stack st = new Stack();
            //添加元素
            st.Push(2);
            st.Push(6);
            st.Push(9);
            st.Push(5);
            st.Push(1);
            //个数
            //Console.WriteLine(st.Count);
            
            //只要使用一次pop方法,就会从最后一个元素开始排除  弹出
            //Console.WriteLine(st.Pop());
            //只想查看不弹出
            //Console.WriteLine(st.Peek());

            //遍历集合
            foreach(int aa in st)
            {
                Console.WriteLine(aa);
            }

            
            //Console.WriteLine(st.Count);






            queue队列集合    
            先进先出
            实例化   初始化
            Queue que = new Queue();
            //添加元素
            que.Enqueue(5);
            que.Enqueue(2);
            que.Enqueue(9);
            que.Enqueue(8);
            que.Enqueue(1);
            //移除一个元素   从头开始
            que.Dequeue();

            //个数
            //Console.WriteLine(que.Count);


            //遍历集合
            foreach(int aa in que)
            {
                Console.WriteLine(aa);
            }




            HashTable   哈希表集合
            先进后出   一个一个赋值,但是只能一起取值
            实例化   初始化
            Hashtable ht = new Hashtable();
            添加元素
            ht.Add(1, "张三");
            ht.Add(2, "李四");
            ht.Add(3, "王五");
            ht.Add(4, "赵六");
            ht.Add(5, "冯七");
            ht.Add(6, "钱八");
           
            读取
            foreach (object aa in ht.Keys)//单纯的存储key的集合
            {
                Console.WriteLine(aa);
            }
            foreach (string bb in ht.Values)
            {
                Console.WriteLine(bb);
            }


            使用枚举类型进行读取,排列成表格
            IDictionaryEnumerator ide = ht.GetEnumerator();
            while(ide.MoveNext())
            {
                Console.WriteLine(ide.Key+"\\t"+ide.Value);
            }
特殊集合知识点

 

 


 

 

以上是关于集合及特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式特殊符号及用法

比较 C# 中的字符串片段并从集合中删除项目

PHP字符串操作大集合

集合及特殊集合

集合及特殊集合arrayList,Stack,Queue

使用 Mongo 集合中的特殊字符