C#面向对象集合类

本文详细介绍了C#中ArrayList和HashTable两种集合的数据结构特点,包括动态调整大小、存储任意类型对象、常用属性(如容量、元素数)和方法(添加、删除、查找等)。同时展示了如何使用这些集合进行元素管理和操作。
摘要由CSDN通过智能技术生成

集合的特征和类型

特征:(1)可以动态改变大小

(2)可储存任意类型的对象

(3)提供一系列操作集合中对象的方法

集合类型:

C#中的集合定义在System.Collections命名空间

列表集合ArrayList

ArrayList相当于一个动态数组,大小可以更具需要动态改变‘

ArrayList使用


            ArrayList list = new ArrayList() { };
            Customer te = new Customer("liu", 6);
            Customer t = new Customer("qiong", 7);
            list.Add(te);
            list.Add(t);
            for(int i=0;i<list.Count;i++)
            {
                Console.WriteLine((list[i] as Customer).Name);//数据类型转换 as
            }

ArrayList把所有储存的元素都当作对象引用对象,所有可以储存任何对象,在访问时,需要将数据类型转换回储存前的类型 

ArrayList的常用属性

属性功能说明
Capacity获取或设置ArrayList可包含的元素个数
Count获取ArrayList实际包含的元素个数

举例

public class Customer
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Customer(string name, int age)
        {
            Name = name;
            Age = age;
        }
    }
Customer z = new Customer("z", 1);
            Customer s = new Customer("s", 2);
            Customer q = new Customer("q", 2);
            ArrayList list = new ArrayList(2);
            Console.WriteLine("集合可储存元素数:{0}",list.Capacity);
            Console.WriteLine("集合实际元素数:{0}", list.Count);
            list.Add(z);
            Console.WriteLine("集合可储存元素数:{0}", list.Capacity);
            Console.WriteLine("集合实际元素数:{0}", list.Count);
            list.Add(s);
            Console.WriteLine("集合可储存元素数:{0}", list.Capacity);
            Console.WriteLine("集合实际元素数:{0}", list.Count);
            list.Add(q);
            Console.WriteLine("集合可储存元素数:{0}", list.Capacity);
            Console.WriteLine("集合实际元素数:{0}", list.Count);

 运行结果

刚开始时,我们创建时指定ArrayList的容量为2,当我们添加两个数据时,集合可储存元素数是2,集合实际元素数是2,当我们添加第三个数据时超出了我们创建时给的容量,集合可储存元素数变成了4。依次往后退,我们添加五个数据,集合可储存数据会变成8......

so,我们可以知道,ArrayList集合的索引也是从0开始,ArrayList中储存的元素超出容量时,其容量将会自动增长一倍

ArrayList的常用方法

方法功能说明
Add(object obj)将元素添加到ArrayList结尾处
Insert(int index,object obj)将元素添加到ArrayList的指定位置
Remove(object obj)移除ArrayList指定的元素
RemoveAt(int index)移除ArrayList指定索引处元素
Clear()清除ArrayList中的所有元素
Sort()将ArrayList中的元素排序
Reverse()将ArrayList中的元素顺序反转
TrimToSize()将ArrayList容量数设置为实际元素个数

举例使用Add()和insert()向集合添加元素

 模拟办理业务排队

atic void Main(string[] args)
        {
            int num = 1;
            Customer te = new Customer("te", 1);
            Customer t = new Customer("t", 2);
            Customer ji = new Customer("ji", 3);
            ArrayList list= new ArrayList();    
            list.Add(te);
            list.Add(t);
            list.Insert(0, ji);
            Console.WriteLine("排队的人有:");
            foreach(object obj in list) {
                Customer j=obj as Customer;
                Console.WriteLine("{0}号客户:{1}",num++,j.Name);
            }
        }

Add()方法是添加数据,Insert()方法可以指定元素位置

 删除元素Remove()可以指定删除哪个元素

  static void Main(string[] args)
        {
            int num = 1;
            Customer te = new Customer("te", 1);
            Customer t = new Customer("t", 2);
            Customer ji = new Customer("ji", 3);
            ArrayList list= new ArrayList();    
            list.Add(te);
            list.Add(t);
            list.Insert(0, ji);
            list.Remove(ji);
            Console.WriteLine("排队的人有:");
            foreach(object obj in list) {
                Customer j=obj as Customer;
                Console.WriteLine("{0}号客户:{1}",num++,j.Name);
            }
        }

RemoveAt() 

 static void Main(string[] args)
        {
            int num = 1;
            Customer te = new Customer("te", 1);
            Customer t = new Customer("t", 2);
            Customer ji = new Customer("ji", 3);
            ArrayList list= new ArrayList();    
            list.Add(te);
            list.Add(t);
            list.Insert(0, ji);
            list.Remove(ji);
            list.RemoveAt(0);
            Console.WriteLine("排队的人有:");
            foreach(object obj in list) {
                Customer j=obj as Customer;
                Console.WriteLine("{0}号客户:{1}",num++,j.Name);
            }
        }

运行结果

 

Clear()

static void Main(string[] args)
        {
            int num = 1;
            Customer te = new Customer("te", 1);
            Customer t = new Customer("t", 2);
            Customer ji = new Customer("ji", 3);
            ArrayList list= new ArrayList();    
            list.Add(te);
            list.Add(t);
            list.Insert(0, ji);
            list.Remove(ji);
            list.RemoveAt(0);
            list.Clear();
            Console.WriteLine("排队的人有:");
            foreach(object obj in list) {
                Customer j=obj as Customer;
                Console.WriteLine("{0}号客户:{1}",num++,j.Name);
            }
        }

clear()清除所有数据,当前排队人数为0

HashTable字典集合 

hashtable是用于处理key/value(键/值)对的集合容器

使用

static void Main(string[] args)
        {
            int num = 1;
            Customer te = new Customer("ss", 1);
            Customer t = new Customer("tt", 2);
            Customer ji = new Customer("jary", 3);
            Hashtable list=new Hashtable();
            list.Add(te.Name,te);
            list.Add(t.Name,t);
            list.Add(ji.Name,ji);
            //查找客户姓名为jary的人
            string name = "jary";
            Customer customer = list[name] as Customer;
            Console.WriteLine("{0}客户被找到",name);

        }

运行结果

 

HashTable的常用属性

属性功能说明
Keys

获取包含HashTable中所有键的ICollection

(可以遍历该属性访问HashTable中的所有键)

Values

获取包含HashTable中所有值的ICollection

(可以遍历该属性访问HashTable中的所有值)

Count获取HashTable中键/值对的数目

使用

static void Main(string[] args)
        {

            Customer te = new Customer("ss", 1);
            Customer t = new Customer("tt", 2);
            Customer ji = new Customer("jary", 3);
            Hashtable list=new Hashtable();
            list.Add(te.Name,te);
            list.Add(t.Name,t);
            list.Add(ji.Name,ji);
            Console.WriteLine("list包含一下键:");
            foreach(object key in list.Keys)
            {
                Console.WriteLine(key);
            }
            Console.WriteLine("list包含一下值:");
            foreach(object value in list.Values)
            {
                Customer cs=value as Customer;
                Console.WriteLine("姓名:{0}年龄:{1}",cs.Name,cs.Age);
            }
            Console.WriteLine("list中键值对的个数{0}",list.Count);

        }

 运行效果

 foreach循环的优点

语言简洁

循环效率比for高

不用关心数值的起始索引

HashTable常用方法

方法功能说明
Add(object key,object value)将带有指定键和值的元素添加到HashTable中
Remove(object Key)从HashTable中移除带有指定键的元素
CLear()移除HashTable中的所有元素
ContainKey(object key)确定HashTable中是否包含指定键
ContainsValue(object value)确定HashTable中是否包含指定值

 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值