黑马程序员-------.net基础知识九

本文详细介绍了C#中的数组、ArrayList、List(泛型集合)和Dictionary等集合类的特点及常用方法,并通过示例代码展示了如何使用这些集合类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

 

C#集合类: Array .ArrayList .Dictionary 相关

    我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转  化,增加了系统装箱和拆箱的负担,例如我们需要在电子商务网站中存储用户的购物车信息(商品名,对应的商品个数)时,完全可以用 Dictionary<string, int> 来存储购物车信息,而不需要任何的类型转化。
 1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的
2.数组要声明元素的类型,集合类的元素类型却是object.
3.数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。
4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!


数组 Array

int[] intArray1;

//初始化已声明的一维数组

intArray1 = new int[3];

intArray1 = new int[3]{1,2,3};

intArray1 = new int[]{1,2,3};

ArrayList类  

对象被设计成为一个动态数组类型,其容量会随着需要而适当的扩充.

方法:

1:Add()向数组中添加一个元素,

2:Remove()删除数组中的一个元素

3:RemoveAt(int i)删除数组中索引值为i的元素

4:Reverse()反转数组的元素

5:Sort()以从小到大的顺序排列数组的元素

6:Clone()复制一个数组

例:

using System;

using System.Collections.Generic;

using System.Text;

using System.Collections;

namespace ConsoleApplication1

{

     class Program

      {

         static void Main(string[] args)

          {

             ArrayList al = new ArrayList();

             al.Add(100);//单个添加

              foreach (int number in new int[6] { 9, 3, 7, 2, 4, 8 })

              {

                 al.Add(number);//集体添加方法一

             }

              int[] number2 = new int[2] { 11,12 };

             al.AddRange(number2);//集体添加方法二

             al.Remove(3);//移除值为3的

             al.RemoveAt(3);//移除第3个

             ArrayList al2 = new ArrayList(al.GetRange(1, 3));//新ArrayList只取旧ArrayList一部份





             Console.WriteLine("遍历方法一:");

             foreach (int i in al)//不要强制转换

              {

                 Console.WriteLine(i);//遍历方法一

             }



             Console.WriteLine("遍历方法二:");

             for (int i = 0; i != al2.Count; i++)//数组是length

              {

                 int number = (int)al2;//一定要强制转换

                 Console.WriteLine(number);//遍历方法二



             }

         }

     }

}



List(泛型集合)和常用方法汇总及举例  

 

 1 Add 将对象添加到List<T>的结尾处

例:

List<int> list = new List<int>();

            list.Add(12);

            list.Add(56);

            list.Add(0);

            list.Add(91);

            list.Add(6);

            for (int i = 0; i < list.Count; i++)

            {

                Console.WriteLine(list[i]);

            }

            Console.ReadKey();

2 AddRange  将指定集合的元素添加到List<T>当中。

例:

List<int> list = new List<int>();

            int[] nums = { 1, 3, 5, 7, 9 };

            list.Add(12);

            list.Add(56);

            list.Add(0);

            list.Add(91);

            list.Add(6);

            list.AddRange(nums);   //数组中的值以单个值的形式存入泛型集合中

            for (int i = 0; i < list.Count; i++)

            {

                Console.WriteLine(list[i]);

            }

            Console.ReadKey();

3 Clear 从List<T>中移除所有元素

例:

List<int> list = new List<int>();

            int[] nums = { 1, 3, 5, 7, 9 };

            list.Add(12);

            list.Add(56);

            list.Add(0);

            list.Add(91);

            list.Add(6);

            list.AddRange(nums);   //数组中的值以单个值的形式存入泛型集合中

            list.Clear();

            for (int i = 0; i < list.Count; i++)

            {

                Console.WriteLine(list[i]);

            }

            Console.ReadKey();

4 contains  判断元素是否存在于List<T>中

例:

List<int> list = new List<int>();

            int[] nums = { 1, 3, 5, 7, 9 };

            list.Add(12);

            list.Add(56);

            list.Add(0);

            list.Add(91);

            list.Add(6);

            list.AddRange(nums);   //数组中的值以单个值的形式存入泛型集合中

            bool result = list.Contains(9);

            Console.WriteLine(result);   //返回true

            Console.ReadKey();


5 Equals(object) 确定指定的object是否等于当前的object。(继承自object)

例:

List<int> list = new List<int>();

            List<int> list2 = new List<int>();

            int[] nums = { 12, 56, 0, 91, 6 };

            list.Add(12);

            list.Add(56);

            list.Add(0);

            list.Add(91);

            list.Add(6);

            list2.AddRange(nums);   //数组中的值以单个值的形式存入泛型集合中

            bool result = list.Equals(list2);

            Console.WriteLine(result);


对于直接应用中的例子:

//    先定义了一个类:
public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Student(string name, int age)
        {
            this.Age = age;
            this.Name = name;
        }
    }
   list<T>实例:
            List<Student> stu = new List<Student>();
            Student stu1 = new Student("小华", 12);
            Student stu2 = new Student("小定", 12);
            Student stu3 = new Student("小砍", 12);
            Student stu4 = new Student("小苗", 12);
            stu.Add(stu1);
            stu.Add(stu2);
            stu.Add(stu3);
            stu.Add(stu4);
            foreach (Student student in stu)
            {
                Console.WriteLine("{0} {1}",student.Name,student.Age);
            }
            Console.ReadKey();


Dictionary

 Dictionary<K,V>泛型集合不仅对数据类型做了约束,他可以对类进行操作,遍历此集合时,是对它的value进行遍历。还能通过关键字Key来访问集合。

例: 

Dictionary<string,Student> stu = new Dictionary<string,Student>();
            
            Student stu1 = new Student("小华", 12);
            Student stu2 = new Student("小定", 12);
            Student stu3 = new Student("小砍", 12);
            Student stu4 = new Student("小苗", 12);
            stu.Add(stu1.Name,stu1);
            stu.Add(stu2.Name,stu2);
            stu.Add(stu3.Name,stu3);
            stu.Add(stu4.Name,stu4);
            Student stu5 = stu["小华"];//能通过key关键字来访问
            foreach (Student student in stu.Values)
            {
                Console.WriteLine("{0} {1}  {2}",student.Name,student.Age,stu5.Age);
            }
            Console.ReadKey();


 

 

 

 

 

 
---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值