集合类
1.ArrayList集合
- 概念:
类似于数组,但是比数组的功能更强大,可以储存一切类型的数据,包括本身,而且可以自动开辟空间,但是需要手动添加命名空间。
命名空间:using.System.Collections;
语法:ArrayList 名字 = new ArrayList();
注意:无论什么元素,添加到集合当中后都变成一个object类型。 可以使用里氏转换方法进行强转
- ArrayList的方法:
Add() | 添加单个元素,也可以添加多个元素,比如数组;但是输出的是命名空间 |
AddRange() | 添加多个元素,比如数组,集合。 |
Clear() | 清空所有元素 |
Remove() | 删除单个元素,写谁就删谁 |
RemoveAt() | 根据下标删除元素 |
Sort() | 升序排列 |
Reverse() | 反转 |
Insert(位置,插入的内容) | 在指定位置插入一个元素 |
InsertRange() | 在指定位置插入多个元素 |
RemoveRange(下标,范围) | 根据下标删除多个元素 |
Contains() | 判断是否包含指定的元素,返回bool类型 |
-
ArrayList长度的问题:
1.count:表示这个集合中实际包含元素的个数
2. capcity:表示这个集合中可以包含元素的个数
2.Hastable集合
- 概念:
Hastable类似于我们生活中的字典,通过拼音来找到你所要的字,而Hastable通过键值对来进行查找你所要找的值。所以,在Hastable中,都是通过键值对来进行操作的。 我们需要手写命名空间。
命名空间:using System.Collections
语法: Hastable 名称 = new Hastable();
- Hastable特点:里面所具有的键是唯一的,而键对应的值是不唯一的,可以重复。
- Hastable的方法:
Add(Keys,Value) | 用于添加键值对,键和值可以是任何类型 |
ContainsKey(键) | 判断集合中的键是否重复,返回一个bool类型 |
ContainsValue() | 判断集合中的值是否重复,返回一个bool类型 |
Clear(键) | 清空集合 |
Remove(键) | 移出集合中的键值对 |
//Add()的用法
Hastable ht = new Hastable();
ht.Add(1,"张三");//另外一种添加方式:ht[1]="张三";
//Clear()的用法
ht.Clear();//清空集合
//Remove()的用法
ht.Remove(1);//将键值为1的键值对移出
//ContainsKey()的用法
if(!ht.ContainsKey(2))
{
ht.Add(2,"abc");
}
else
{
Console.WriteLine("键值重复");
}
//ContainsValue()的用法与ContainsKey()类似
- Hastable的输出 :
我们一般用的都是for循环来输出集合的值,但是在Hastable中我们不能使用for循环,否则输出的是Hastable的命名空间,我们可以用foreach来输出键值对。
语言:
foreach(var item in 集合名字)//例如Hastable对象名字,可以选择Keys或者Value来输出键值还是值
{
}
例如:
Hastable ht = new Hastable();
ht.Add(1,"张胜男");
ht.Add(2,"abc");
ht.Add('a',5);
foreach(var item in ht.Keys)
{
console.WriteLine("键:{0}=========值:{1}",item,ht[item]);
}
- Hastable的长度:
1.count:表示这个集合中实际包含元素的个数
2. capcity:表示这个集合中可以包含元素的个数
3.List泛型集合
- 概念:
List泛型集合与ArrayList集合相似,但是List泛型集合里面的数据可以是特定的类型,例如int,char等等
创建对象:List<类型> 名字 = new List<类型>()
- 命名空间:自带,不用用户手动输入
using System.Collsctions.Generic;
- List泛型集合的方法:
与ArrayList集合一样。
- List泛型集合的长度: 与ArrayList一样。
- List泛型集合可以转化成数组:
可以利用ToArray()转换成数组,也可以用数组转换成List泛型集合,利用ToList()。但是在转换时要注意,转换时要注意数据类型要一样。
List<int> listOne = new List<int>();
ListOne.AddRange(new int[] {1,2,3,4,5,6});
//List泛型集合转换成数组
int[] s = listOne.ToArray();
//数组转换成List
List<int> listTwo = s.ToList();
4.字典集合
- 概念:
与HasTable一样,也是通过键值对进行操作,但是字典中,键值对是由类型限制的,用户自己限制类型
语法:Dictionary<类型1,类型2> 名字 = new Dictionary<类型1,类型2>();
- 字典的方法:
与HasTable类似
- 字典的遍历:
字典的遍历也跟HasTable表一样,都用foreach() ,但是字典的遍历可以更加炫酷,可以直接将键值对输出
语法:foreach(KeyValuePair<int,string> 名字 in 集合名字){ }
Dictronary<int,string> dic = new Dictronary<int,string>();
dic.Add(1,"张三");
dic.Add(2,"李四");
dic.Add(3,"王五");
foreach(KeyValuePair<int,string> kv in dic)
{
Console.WriteLine("{0}----{1}",kv.Key,kv.Value);
}