C# (泛型)集合的使用以及遍历方式

使用集合组织相关数据

ArrayList是一个可动态维护长度的集合

ArrayList 每个元素对应一个索引

实现步骤:

​ 1.引入System.Collections命名空间

​ 2.实例化ArrayList对象

添加元素:

ArrayList engineers = new ArrayList();

//创建工程师对象

SE jack = new SE();

jack.Name = "王小毛”

……

//添加对象到集合

engineers.Add(jack);

//获取集合元素的数目

MessageBox.Show(engineers.Count);

//向ArrayList中添加值类型的元素时,会执行装箱处理

集合初始化器

​ C#3.0语言的新特性之一

由一系列元素初始化器构成,包围在“{”和“}”之间,并使用逗号进行分隔

ArrayList engineers = new ArrayList() 
{ 
   new SE()
{
   Name = "王小毛",Age = 26,
   Gender = Gender.male,ID = "000",Popularity = 10
 },
    new SE()
{
	Name = "周新雨",Age = 22,
   Gender = Gender.female,ID = "111",Popularity = 20
},
   new SE()
{
   Name = "张烨",Age = 30,
   Gender = Gender.male,ID = "222",Popularity = 20
}
};

访问ArrayList单个元素

(类型) ArrayList [index]  //按指定索引(下标)取得对象
//如
    SE engineer = (SE) engineers[0];
	 MessageBox.Show(engineer.SayHi()); 

    

ArrayList遍历数组

for方式
for (int i = 0; i < engineers.Count; i++)
{
        SE seFor = (SE)engineers[i];
        Console.WriteLine(seFor.Name);
}

foreach方式
foreach (Object obj in engineers)
{
         SE seForeach = (SE)obj;
         Console.WriteLine(seForeach.Name);
} 

删除ArrayList的元素

ArrayList.Remove(对象名)   //删除指定对象名的对象
ArrayList.RemoveAt(index) //删除指定索引的对象
ArrayList.Clear()                   //清除集合内的所有元素

Hashtable集合

动态可维护长度
可通过关键字检索

Hashtable 通常称为哈希表

给Hashtable添加元素

Hashtable engineers = new Hashtable();  
engineers.Add(jack.ID,jack);
		// 	Key     Value

获取Hashtable的元素

SE se2 = (SE) engineers["000"];		//需要类型转换
se2.SayHi();						//通过key获取元素

删除Hashtable的元素

engineers.Remove("000"); 	//通过key删除元素

Hashtable的遍历

不能遍历整个对象,而是遍历Values
foreach(Object obj in engineers.Values)
{
    SE se = (SE)obj;
    Console.WriteLine(se.Name);
}

可以遍历Keys
foreach (Object obj in engineers.Keys)
{
    Console.WriteLine((string)obj);
} 

可以遍历键/值对
foreach (DictionaryEntry en in engineers)
{
    Console.WriteLine((string)obj); 
    Console.WriteLine(((SE)en.value).Name);
} 

List泛型集合

List<SE> engineers = new List<SE>();
//将SE对象加入工程师集合
engineers.Add(jack); 
engineers.Add(joe);
engineers.Add(ema);

engineers.Add(pm);     //添加一个项目经理对象

泛型最常见的用途是创建集合类

泛型集合可以约束集合内的元素类型

**典型泛型集合List、Dictionary<K,V>

u****、<K,V>表示该泛型集合中的元素类型

1.命名空间:System.Collections.Generic

2.创建List泛型集合

3.遍历

List<SE> engineers = new List<SE>();
foreach (SE se in engineers)
{
       MessageBox.Show(se.SayHi());
}

访问List ArrayList 的对比

异同点ListArrayList
不同点增加元素时类型严格检查可以增加任何类型
添加和读取值类型元素时,无需装箱拆箱添加和读取值类型元素时,需要装箱拆箱
相同点通过索引访问集合的元素通过索引访问集合的元素
添加对象方法相同添加对象方法相同
通过索引删除元素通过索引删除元素

Dictionary<K,V>

Dictionary<K,V>通常称为字典

<K,V>约束集合中元素类型

编译时检查类型约束

无需装箱拆箱操作

利用Dictionary<K,V>存储工程师列表

Dictionary<string, SE> engineers = new Dictionary<string,SE>();
engineers.Add(jack.ID,jack);	//添加一对Key/Value
…
SE engineer = engineers["000"];	//通过Key获取元素
…
engineers.Remove("000");		//通过Key删除元素

遍历Dictionary

遍历key值
foreach(int key in names.Keys)
    {
     Console.WriteLine(key);
    }
遍历key取集合Value
foreach (int key in names.Keys)
 {
   Console.WriteLine(names[key]);
}
遍历所有key下的value
foreach (string val in names.Values)
 {
     Console.WriteLine(val);
  }

访问 Dictionary<K,V> Hashtable 的对比

异同点Dictionary<K,V>Hashtable
不同点增加元素时类型严格检查可以增加任何类型
无需装箱拆箱需要装箱拆箱
相同点通过Key获取Value通过Key获取Value
添加对象方法相同添加对象方法相同
遍历方法遍历方法
遍历字典下的集合
foreach(grade key in stus.Keys)
{
   if(key.ClsNo == 128)
   {
      Console.WriteLine(stus[key]);
       foreach(Studnet value in stus[key])
       {
           Console.WriteLine(value.name,value.age ……);
       }
       
   }
    
}

泛型的重要性

​ 1.实现代码重用,未来的主流技术

​ 2.性能高,避免繁琐的装箱拆箱

​ 3.提供了更好的类型安全性

​ 4.CLR支持泛型

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#泛型集合List是一种可以存储任意类型的动态数组,它位于System.Collections.Generic命名空间下。语法如下:List<T> listName = new List<T>(); 其中T代表泛型类型参数,可以是任意有效的C#数据类型。(引用) List集合可以通过add方法逐个添加元素,也可以使用AddRange方法将另一个List集合添加到当前集合中。例如,可以创建两个List<int>对象,一个用于存储偶数,一个用于存储奇数,然后将奇数集合添加到偶数集合中,并通过foreach循环遍历输出集合中的元素。代码如下(引用): ```csharp int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List<int> listEven = new List<int>(); List<int> listOdd = new List<int>(); foreach (int num in nums) { if (num % 2 == 0) { listEven.Add(num); } else { listOdd.Add(num); } } listEven.AddRange(listOdd); foreach (int item in listEven) { Console.Write(item + " "); } Console.ReadKey(); ``` 使用泛型集合List的一个好处是可以避免频繁的类型转换。通过指定泛型类型参数,我们可以直接在集合中存储特定类型的对象,而无需进行繁琐的类型转换。这样可以提高代码的可读性和效率。(引用)<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C#中List泛型用法,必知必会!](https://blog.csdn.net/qq_44034384/article/details/106312390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [c#List泛型集合](https://blog.csdn.net/linxianming_/article/details/125979400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值