在C#中我们学到了一些讲数据组合到一起的方法,那就是通过数据,集合,泛型,现在我就来简单的谈谈本人自己对他们的理解:
数组:这个是我们最早接触的,可以存放很多不同类型的值,缺点就是位置太死,不能动,比如往数组的中
集合:ArrayLIst HashTable,可以说它就是一个动态的数组,很灵活,很好的解决了数组的一些缺点,可以放置
泛型:List<int> bb = new List<int>();
下面详细介绍下泛型的用法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
集合的概述:
1.ArrayList
2.hashtable
3.List<T>
4.Dictionary<K,V>
-------------------------ArrayList-------------------------------
概述:1.非常类似于数组,称之为:数组列表。
2.数组的容量是固定的。
3.它可以根据类提供的方法,进行访问。
4.ArrayList类来自“System.Collections”命名空间。(一定要引入)
5.ArrayList只提供一维数组的形式。
6.ArrayList是动态可维护的。
7.申明一个ArrayList时必须实例化。
语法:
public int Add(object,value);
注释:Add()方法返回的是一个int整型。
示例1:
..........
//建立班级学员集合
ArrayList students=new ArrayList();
Student zhang=new Student("王羲之","男",40,"书法");
Student fang=new Student("欧阳询","男",50,"书法");
students.Add(zhang);
students.Add(fang);
//打印集合数目
MessageBox.Show(string.Format("共包括{0}个学员",students.Count.Tostring()));
.................
//存取单个元素
Student stu1=(Student)students(0);
stu1.SayHi();-----调用SayHi()方法
//删除ArrayList中的元素
总共有三种:
1.RemoveAt(int index)方法删除指定index的元素。
2.Remove(object,value)方法删除一个指定对象的元素。
3.Clear()方法移除集合中的所有元素。
例如2.:
//使用索引删除元素
students.RemaveAt(0);-------0:索引值
//使用对象名删除元素
students.Remave(zhang);------zhang:对象名
//删除所有的元素
students.Clear();
//遍历ArrayList中的元素
两种方法:
1.for循环
2.foreach循环
示例:
//for循环
for(int i=0;i<students.count;i++)
{
Student stufor=(Student)students[i];
Console.WriteLine(stufor.Name);
}
//foreach循环
foreach(Object stuo in students)
{
Student stuforeach=(Student)stuo;
Console.WriteLine(stuforeach.Name);
}
-------------------------Hashtable(哈希表)-------------------------------
概述:
1.哈希表也属于System.Collections命名空间。
2.它的每个元素都是一个键/值对。
3.添加元素也需要使用Add()方法;
4.哈希表的Add()方法有2个参数,一个表示键,一个表示键所对应的值。
语法:
public void Add(Object key, Object value)
示例:
Hashtable students=new Hashtable();
Student zhang =new ("颜真卿","男",60,"书法")
Student yang =new ("柳公权","男",55,"书法");
//使用Add方法添加元素
students.Add(zhang.Name,zhang);
studnets.Add(fang.Name,fang);
//获取指定的元素
Student stu2=(Student)students["zhang"];
stu2.SayHi();
//遍历哈希表
//foreach循环遍历
foreach(Object stuno in students .values)
{
Student stuforeach=(Student)stuno;
Console.WriteaLine(stuforeach.Name);
}
//哈希表的属性
---------------------------------------------------------
| 属性 | 功能说明 |
|-----------------------|-------------------------------|
| Values | 获取哈希表中所有的键 |
|-----------------------|------------------------------ |
| Keys ┃ 获取哈希表中所有的值 ┃
|-----------------------|-------------------------------|
//删除哈希表中的元素
语法:
public void Remove(Object,Key);-------------------------只有一种删除方法
例如:
students.remove("颜真卿");
-------------------------------泛型和泛型集合--------------------------------
泛型:
概念:
1.泛型是C#2.0中的一个新特征。通过泛型可以定义安全的数据类型。
2.比较典型的泛型集合是:List<T>和Dictionary<K,V>.
3. 泛型集合必须实例化。
泛型集合List<T>
语法:List<T>泛型集合的方法如下:
List<Student> students =new List<Student>();
注释:"<T>"中的"T"可以对集合中的元素进行约束,T表明集合中管理的元素类型。
1.它存储数据的方式和ArrayList相似
示例:
//访问单个字符
//通过索引访问,无需类型转换
Student stu1=students[2];
SayHi();
//通过索引删除
students.RemaveAt(0);
students.Remave(zhang);
//foreach循环遍历
foreach(Student stu in students)
{
Console.WriteLine(stu.Name);
}
表4-2 List<T>与ArrayList的区别
┏━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ 共同点 ┃ List<T> ┃ ArrayList ┃
┣━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━┫
┃ ┃ 对所有保存元素做类型约束 ┃ 可以增加任何类型 ┃
┃ 不同点 ┣━━━━━━━━━━━━━━━┻━━━━━━━━━━━┃
┃ ┃ 添加/读取无需拆箱、装箱 ┃添加/读取需要拆箱,装箱┃
┣━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━┃
┃ ┃ 通过索引访问集合中的元素 ┃
┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ 相同点 ┃ 添加元素方法相同 ┃
┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ ┃ 删除元素方法相同 ┃
┗━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
泛型集合Dictionary<K,V>
概念:
1.它具有泛型集合的全部特征。
2.它存储数据的方式和哈希表类似。
3.也是通过Key/Value值对保存元素的。
语法:
定义一个Dictionary<K,V>泛型集合的方法如下所示:
Dictionary<string,Student> students=new Dictionary<string,Student>();
示例:
//创建学员集合
Dictionary<string ,Student> student=new Dictionary<string, Student>();
Student zhang =new Student("王羲之","男,25,"书法")
//添加元素
students.Add(zhang.Name,zhang);
//通过关键字来访问
Student stu2=students("王羲之")
stu2.SayHi();--调用SayHi方法;
//foreach循环遍历
foreach(Student student in students.values)
{
Console.WriteLine(student.Name);
}
//删除元素
students.Remove("王羲之");
注意:
1.Dictionary<K,V>的Key是string类型;
2.Value是Student类型保存学员对象
1.ArrayList
2.hashtable
3.List<T>
4.Dictionary<K,V>
-------------------------ArrayList-------------------------------
概述:1.非常类似于数组,称之为:数组列表。
2.数组的容量是固定的。
3.它可以根据类提供的方法,进行访问。
4.ArrayList类来自“System.Collections”命名空间。(一定要引入)
5.ArrayList只提供一维数组的形式。
6.ArrayList是动态可维护的。
7.申明一个ArrayList时必须实例化。
语法:
public int Add(object,value);
注释:Add()方法返回的是一个int整型。
示例1:
..........
//建立班级学员集合
ArrayList students=new ArrayList();
Student zhang=new Student("王羲之","男",40,"书法");
Student fang=new Student("欧阳询","男",50,"书法");
students.Add(zhang);
students.Add(fang);
//打印集合数目
MessageBox.Show(string.Format("共包括{0}个学员",students.Count.Tostring()));
.................
//存取单个元素
Student stu1=(Student)students(0);
stu1.SayHi();-----调用SayHi()方法
//删除ArrayList中的元素
总共有三种:
1.RemoveAt(int index)方法删除指定index的元素。
2.Remove(object,value)方法删除一个指定对象的元素。
3.Clear()方法移除集合中的所有元素。
例如2.:
//使用索引删除元素
students.RemaveAt(0);-------0:索引值
//使用对象名删除元素
students.Remave(zhang);------zhang:对象名
//删除所有的元素
students.Clear();
//遍历ArrayList中的元素
两种方法:
1.for循环
2.foreach循环
示例:
//for循环
for(int i=0;i<students.count;i++)
{
Student stufor=(Student)students[i];
Console.WriteLine(stufor.Name);
}
//foreach循环
foreach(Object stuo in students)
{
Student stuforeach=(Student)stuo;
Console.WriteLine(stuforeach.Name);
}
-------------------------Hashtable(哈希表)-------------------------------
概述:
1.哈希表也属于System.Collections命名空间。
2.它的每个元素都是一个键/值对。
3.添加元素也需要使用Add()方法;
4.哈希表的Add()方法有2个参数,一个表示键,一个表示键所对应的值。
语法:
public void Add(Object key, Object value)
示例:
Hashtable students=new Hashtable();
Student zhang =new ("颜真卿","男",60,"书法")
Student yang =new ("柳公权","男",55,"书法");
//使用Add方法添加元素
students.Add(zhang.Name,zhang);
studnets.Add(fang.Name,fang);
//获取指定的元素
Student stu2=(Student)students["zhang"];
stu2.SayHi();
//遍历哈希表
//foreach循环遍历
foreach(Object stuno in students .values)
{
Student stuforeach=(Student)stuno;
Console.WriteaLine(stuforeach.Name);
}
//哈希表的属性
---------------------------------------------------------
| 属性 | 功能说明 |
|-----------------------|-------------------------------|
| Values | 获取哈希表中所有的键 |
|-----------------------|------------------------------ |
| Keys ┃ 获取哈希表中所有的值 ┃
|-----------------------|-------------------------------|
//删除哈希表中的元素
语法:
public void Remove(Object,Key);-------------------------只有一种删除方法
例如:
students.remove("颜真卿");
-------------------------------泛型和泛型集合--------------------------------
泛型:
概念:
1.泛型是C#2.0中的一个新特征。通过泛型可以定义安全的数据类型。
2.比较典型的泛型集合是:List<T>和Dictionary<K,V>.
3. 泛型集合必须实例化。
泛型集合List<T>
语法:List<T>泛型集合的方法如下:
List<Student> students =new List<Student>();
注释:"<T>"中的"T"可以对集合中的元素进行约束,T表明集合中管理的元素类型。
1.它存储数据的方式和ArrayList相似
示例:
//访问单个字符
//通过索引访问,无需类型转换
Student stu1=students[2];
SayHi();
//通过索引删除
students.RemaveAt(0);
students.Remave(zhang);
//foreach循环遍历
foreach(Student stu in students)
{
Console.WriteLine(stu.Name);
}
表4-2 List<T>与ArrayList的区别
┏━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ 共同点 ┃ List<T> ┃ ArrayList ┃
┣━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━┫
┃ ┃ 对所有保存元素做类型约束 ┃ 可以增加任何类型 ┃
┃ 不同点 ┣━━━━━━━━━━━━━━━┻━━━━━━━━━━━┃
┃ ┃ 添加/读取无需拆箱、装箱 ┃添加/读取需要拆箱,装箱┃
┣━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━┃
┃ ┃ 通过索引访问集合中的元素 ┃
┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ 相同点 ┃ 添加元素方法相同 ┃
┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ ┃ 删除元素方法相同 ┃
┗━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
泛型集合Dictionary<K,V>
概念:
1.它具有泛型集合的全部特征。
2.它存储数据的方式和哈希表类似。
3.也是通过Key/Value值对保存元素的。
语法:
定义一个Dictionary<K,V>泛型集合的方法如下所示:
Dictionary<string,Student> students=new Dictionary<string,Student>();
示例:
//创建学员集合
Dictionary<string ,Student> student=new Dictionary<string, Student>();
Student zhang =new Student("王羲之","男,25,"书法")
//添加元素
students.Add(zhang.Name,zhang);
//通过关键字来访问
Student stu2=students("王羲之")
stu2.SayHi();--调用SayHi方法;
//foreach循环遍历
foreach(Student student in students.values)
{
Console.WriteLine(student.Name);
}
//删除元素
students.Remove("王羲之");
注意:
1.Dictionary<K,V>的Key是string类型;
2.Value是Student类型保存学员对象