C#数组和集合专题6(泛型集合List)
泛型集合
①、C#中使用泛型的优点和使用
优点:
a.类型安全:使用泛型集合编译器会在编译期间检查要放入集合对象的数据类型,如果发现不是某种特定的类型就会报错,这样就可以避免发生许多运行时错误,即类型安全。
b.提高性能:由于明确了数据类型,所以在存取数据不会发生类型的转换,特别是存取值类型是不会发生装箱和拆箱操作。
c.使用泛型类型可以最大限度地重用代码
使用:
a.泛型最常见的用途是创建集合类。
b.可以对泛型类进行约束以访问特定数据类型的方法。
c.可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
d.关于泛型数据类型中使用的类型的信息可在运行时通过反射获取。
②、System.Collections.Generic命名空间
泛型集合类 描述
List<T> 一般用于替代ArrayList类,与ArrayList很相似
Dictionary<TKey,TValue> 存储键值对的集合泛型类
SortedList<TKey,TValue> 类似于Dictionary<TKey,TValue>,但按键自动排序
LinkedList<T> 双向链表
Queue<T> 先进先出的队列类
Stack<T> 后进先出的堆栈类
C#中没有ArrayList<T>和Hashtable<Tkey,TValue>这两个泛型集合类。
凡是有对应泛型类型的类就尽量不要使用早期提供的非泛型类型的类。下面的泛型类型对应于低版本提供的类型:
泛型类 低版本提供的非泛型类
List<> ArrayList
Dictionary<> Hashtable
Queue<> Queue
Stack<> Stack
SortedList<> SortedList
③、创建泛型集合类的新实例
泛型集合类<数据类型> 实例名=new 泛型集合类<数据类型>();
List<int> lstStr=new List<int>();
List<Employee> lstStu=new List<Employee>();
还是借用前面的Employee的代码,把main修改为
static void (string[] args)
{
SortedList<int,Employee> sl = new SortedList<int,Employee>(); //存储员工信息
sl.Add(1, new Employee(1, "小雨", 3000));
sl.Add(4, new Employee(4, "小华", 2000));
sl.Add(3, new Employee(3, "小刚", 1500));
sl.Add(2, new Employee(2, "小芳", 3500));
//把ht的键对象全部复制到ArrayList中
List<int> list = new List<int>(sl.Keys); //存储员工号信息
//list.AddRange(sl.Keys);
list.Sort();
//排序完成输出
for (int i = 0; i < list.Count; i++)
{
int e = list[i];
Employee temp = (Employee)sl[e];
Console.WriteLine(temp);
}
}
|