集合与泛型集合

集合:
理解为箱子,没有固定长度,可以放任意类型的数据或是变量;
集合也有索引;

ArrayList:
定义:
ArrayList arr = new ArrayList();
添加元素:
arr.Add(a);
arr.Add(b);

取值:
arr[索引];
注意的是,取值时是object类型,需要进行类型转换;

注意:一个集合虽然可以放任意类型,但是我们使用时一般一个集合就放一种类型;

特殊功能:
arr.Add(); 添加元素
arr.Insert(索引,值); 插队,将值插队进到索引的位置
arr.Remove(值); //根据值来删除集合中的元素
arr.RemoveAt(索引); //根据索引来删除集合中的元素
arr.Clear(); //清空集合

arr.Sort(); //从小到大排列集合中的所有元素
arr.Reverse();
arr.Contains(); //查看集合中是否包含某个元素
arr.count; //集合中元素的个数,返回一个int类型

-------------------------------------------------------------
练习题:
请输入学生个数:
请输入第1个学生的姓名:
请输入第1个学生的性别:
请输入第1个学生的年龄:
请输入第1个学生的成绩:
...
n
********************************
第1个学生的姓名:xxx,性别:xxx,年龄:xxx,成绩:xxx。
...
n

            练习题:
            请输入学生个数:
            请输入第1个学生的姓名:
            请输入第1个学生的性别:
            请输入第1个学生的年龄:
            请输入第1个学生的成绩:
            ...
            n
            ********************************
            第1个学生的姓名:xxx,性别:xxx,年龄:xxx,成绩:xxx。
            ...
            n

            Console.Write("请输入学生个数:");
            int gs = Convert.ToInt32(Console.ReadLine());
            ArrayList a = new ArrayList();
            ArrayList b = new ArrayList();
            ArrayList c = new ArrayList();
            ArrayList d = new ArrayList();
            decimal end = 0m;
            for (int i = 0; i < gs; i++)
            {
                Console.Write("请输入第" + (i + 1) + "个学生姓名:");
                string xm = Console.ReadLine();

                Console.Write("请输入第" + (i + 1) + "个学生性别:");
                string xb = Console.ReadLine();

                Console.Write("请输入第" + (i + 1) + "个学生年龄:");
                int nl = Convert.ToInt32(Console.ReadLine());

                Console.Write("请输入第" + (i + 1) + "个学生成绩:");
                decimal cj = Convert.ToDecimal(Console.ReadLine());

                a.Add(xm);
                b.Add(xb);
                c.Add(nl);
                d.Add(cj);
                end += cj;
            }
            Console.WriteLine("**************************************************");
            for (int j = 0; j < gs; j++)
            {
                Console.WriteLine("第" + (j + 1) + "个学生的姓名:" + a[j] + ",性别:" + b[j] + ",年龄:" + c[j] + ",成绩:" + d[j] + "。");
            }
            Console.WriteLine("总分是:" + end + "平均分是:" + (end / gs) + "。");
            Console.ReadKey();

-------------------------------------------------------------
特殊集合:

Queue 队列集合
定义:
Queue qq = new Queue();
添加元素:
Enqueue("值"/变量);
取值:
Dequeue(); //取第一个进去的值,并在集合中删除掉
Peek(); //取第一进去的值给你看看,不会在集合中删除
-------------------------------------------------------------
Stack 栈桥集合
定义:
Stack ss = new Stack();
添加元素:
ss.Push("值"/变量);
取值:
ss.Pop(); //先进去的后出来,取到的是最后一个进去的,并在集合中删除掉
ss.Peek(); //取最后一个进去的,拿出来给你看看,不会在集合中删除掉
-------------------------------------------------------------
Hashtable:哈希表集合
键值对, 一个建对应一个值;
定义:
Hashtable ha = new Hashtable();
添加元素:
Add(key,value); //key键,用户自定义索引,为object类型
//value值,当前这个索引所对应的内容
取值:
ha[key]; //根据用户自定义索引来取出相对应的内容

遍历:
foreach (string i in ha.Keys) //可以单独遍历键
{
Console.WriteLine(i);
}

foreach (string i in ha.Values) //可以单独遍历值
{
Console.WriteLine(i);
}
-------------------------------------------------------------
泛型集合:
List<类型> li = new List<类型>();

li.Add(同一类型的值或变量);

li[索引]

时间: 2024-12-24 22:38:09

集合与泛型集合的相关文章

普通集合和泛型集合的区别,哈希表和字典表的区别,队列和堆栈的区别以及堆和栈的区别。

普通集合和泛型集合的区别: 泛型集合与传统集合相比 类型更安全. 泛型集合无需装箱拆箱操作. 泛型的重要性. 泛型是未来五年的主流技术 ... 通常情况下,建议您使用泛型集合,因为这样可以获得类型安全的直接优点而不需要从基集合类型派生并实现类型特定的成员.此外,如果集合元素为值类型,泛型集合类型的性能通常优于对应的非泛型集合类型(并优于从非泛型基集合类型派生的类型),因为使用泛型时不必对元素进行装箱. 下面的泛型类型对应于现有的集合类型: List 是对应于 ArrayList 的泛型类. Di

C#集合与泛型集合

看到这个标题,大家应该就知道有泛型集合,就有非泛型集合 既然都是集合,咱们今儿就简单的来对比讲解下 需要记住的不算太多,理解记忆.理解记忆 2017-11-0411:39:09 C# 泛型集合之非泛型集合类与泛型集合类的对应: *****ArrayList对应List ***HashTable对应Dictionary *****Queue对应Queue *****Stack对应Stack SortedList对应SortedList 第一  : ArrayList(非泛型集合)  与List(泛

编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合

建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型.很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看ArrayList这个类的使用情况: ArrayList al=new ArrayList(); al.Add(0); al.Add(1); al.Add("mike"); foreach (var item in al) { Console.WriteLine(item); } 上面这段代码充分演

vb.net环境下将DataTable转成泛型集合方法

背景 做机房收费系统的时候,遇到这样一个问题,将数据库表中的数据取出一行,将每个单元格中的内容填充到窗体 的文本框中.考虑到用DataReader获取结果的复杂性,我就用了泛型集合.可是这么一用却出现了如图所示的问 题. 问题一: 出现这种问题,是因为在DataTable转实体类型时表的字段类型和实体的字段类型不一致造成的. 这个也可以 这么说,中国人的孩子都随父姓,这是传统.但孩子随母姓,就有些不妥. 问题二: 数据库表中字段名和要转换的实体属性字段名不一致,导致转换后实体中depart为空值

集合与泛型

集合类负责存储一系列的个体,其集合的长度可能是不变的或者可变的.相比于普通的数组结构,集合类的功能更加具体. 集合类分为普通(非泛型)集合和泛型集合.泛型集合类的命名空间为集合的一个子命名空间:System.Collections.Generic.非泛型的集合中,所有的成员都被当作为object类型,不同的成员可以拥有不同的数据类型.而泛型的集合所有的成员类型都是相同的. 非泛型集合 所有非泛型集合都实现接口ICollection. 所有非泛型集合中的成员都是object. 集合类的基础接口IC

ConvertHelper与泛型集合

在机房重构时,我们经常会用到ConvertHelper.它把从数据库中查询到的dateTable(也是一个临时表)转化为泛型,然后再填充到DataGridView控件中.ConvertHelper类有两点体现了面向对象的思想.一是因为它是经常被使用而被封装起来的类:二是因为它的返回值是泛型集合,泛型集合使存储数据时灵活而安全,也体现了面向对象的思想. ConvertHelper与sqlHelper 一开始接触ConvertHelper,以为它和sqlHelper一样,后来发现它们因为作用不同引用

.Net学习笔记----2015-06-25(File类的读写文件、List泛型集合、装箱和拆箱、Dictionary字典集合)

File类:静态类,Create Delete Copy Move ,主要用来对数据对文本文件进行读写 File类:缺点:只能读写小文件 读写操作: //byte[] buffer = File.ReadAllBytes(@"C:\Users\Administrator\Desktop\new.txt"); ////将字节数组中的每一个元素都要按照我们指定的编码各式解码成字符串 ////UTF-8 GB2312 GBK ASCII Unicode //string s = Encodi

类库,委托,is和as运算符,泛型集合

类库:其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好. 优点:保密性好缺点:如果这个方法不好用,使用者无法自己去更改它. 类文件是.cs    类库是.dll 新建项目为类库,在debug文件夹下找到dll文件 委托:委托可以理解为:函数的指针 关键词:delegate 声明委托类型:public delegate int FirstDel(int a, int b); FirstDel不是类,是委托变量,不能实例化(不能new), 创建委托变量:FirstDel 名字 = 与这个

机房重构——泛型集合

敲三层的时候就听师傅说过泛型,只不过当时没有特别的注意.当敲用户登录窗体时,我遇到这样的问题,就是我们需要经过验证输入的信息的正误之后才能登录或者不能登录.判断时,需要返回我们从数据库中查到的信息,那么问题就来了,如何返回呢? 一开始我一直用的是DataTable返回数据的,但是当去判断的时候我不知道如何下手了,按照以往的经验,我们可以使用table.rows()或table.field(),具体的实现方法可以自己试验一下.这种方法虽然可以实现,可是里面重复的内容太多了,尤其是每次使用一个字段时