美文网首页
18-泛型集合

18-泛型集合

作者: D丝学编程 | 来源:发表于2021-04-11 18:18 被阅读0次

泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。

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

普通集合在使用用出现的问题:

class Teacher  //教师
{
    public Teacher(string name,double salary)
    {
        this.Name = name;
        this.Salary = salary;
    }
    public string Name { get; set; }   //姓名
    public double Salary { get; set; }  //工资
}
class Student   //学生
{
    public Student(string no,string name)
    {
        this.No = no;
        this.Name = name;
    }
    public string No { get; set; }  //学号
    public string Name { get; set; } //姓名
}
Student s1 = new Student("001","刘备");
Student s2 = new Student("002", "公孙赞");
Teacher t1 = new Teacher("卢值", 5000);
ArrayList list = new ArrayList();
list.Add(s1);
list.Add(s2);
list.Add(t1);

//集合元素的数据类型没有要求一致,所以下面的程序会因为类型的原因报错
foreach (Student item in list)
{
    Console.WriteLine(item.Name);
}

上述程序的foreach循环中会产生执行中错误,原因是集合中第三个对象不是Student对象,此处类型会出异常,由此我们得出:

(1)ArrayList类型不安全性,因为里面什么类型都可以存放。

(2)而泛型集合定义时必须指定集合中存储数据的类型,正好解决了类型安全问题。

一、List泛型集合

List泛型集合使用方法和ArrayList集合类似,如下:

Student s1 = new Student("001","刘备");
Student s2 = new Student("002", "公孙赞");
Teacher t1 = new Teacher("卢值", 5000);
List<Student> list = new List<Student>();
list.Add(s1);
list.Add(s2);
list.Add(t1);  //此行代码编译出错,去掉此行代码,程序正常运行
foreach (Student item in list)
{
    Console.WriteLine(item.Name);
}

上述代码在添加集合元素的时候就会编译出错,保证的类型的安全。

List泛型集合常用属性和方法如下:

属性名 功能说明
Capacity 获取或设置List<T>可包含的元素个数
Count 获取List<T>实际包含的元素个数
方法名 功能说明
Add() 将元素添加到List<T>结尾处
Insert() 将元素添加到List<T>的指定索引处
Remove() 移除List<T>指定的元素
RemoveAt() 移除List<T>指定索引处元素
Clear() 清除List<T>中所有元素
Sort() 对List<T>中的元素排序
Reverse() 将List<T>中的元素顺序反转
ToArray() 将List<T>中的元素复制到数组中

二、Dictionary泛型集合

Dictionary泛型集合使用方法和HashTable集合类似,并且Dictionary泛型集合和List泛型集合一样,都是类型安全的,如下:

Student s1 = new Student("001","刘备");
Student s2 = new Student("002", "公孙赞");
Dictionary<string, Student> list = new Dictionary<string, Student>();
list.Add(s1.No, s1);
list.Add(s2.No, s2);
Console.WriteLine("显示所有人员信息:");
foreach (Student stu in list.Values)
{
    Console.Write(stu.Name+"  ");
}

Dictionary泛型集合常用属性和方法如下:

属性名 功能说明
Keys 获取包含Dictionary<K,V>中所有键的ICollection (可以遍历该属性访问集合中所有键)
Values 获取包含Dictionary<K,V>中所有值的ICollection (可以遍历该属性访问集合中所有值)
Count 获取Dictionary<K,V>中键/值对的数目
方法名 功能说明
Add(object key, object value) 将带有指定键和值的元素添加到Dictionary<K,V>中
Remove() 从Dictionary<K,V>中移除带有指定键的元素
Clear() 移除Dictionary<K,V>中所有元素
ContainsKey() 确定Dictionary<K,V>中是否包含指定键
ContainsValue() 确定Dictionary<K,V>中是否包含指定值

相关文章

  • 18-泛型集合

    泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说...

  • C#基础提升系列——C#集合

    C#集合 有两种主要的集合类型:泛型集合和非泛型集合。 泛型集合被添加在 .NET Framework 2.0 中...

  • Java—泛型详解和使用

    1 泛型介绍 1.1 泛型的出现   泛型的出现还得从集合说起,没有泛型的时候,我们将一个对象存入集合时,集合不c...

  • 四、Java高级--1、泛型

    泛型定义:数据类型参数化,提前定义好集合中放入什么类型集合框架中没使用泛型和使用泛型的比较 泛型规则和限制1、泛型...

  • JDK5的新特性

    可变参数 格式: 注意 静态导入 泛型 泛型类: 泛型方法: 泛型接口: 增强for 在 集合_List 中有...

  • 泛型——Dart(五)

    泛型 从字面意思理解,就是广泛的类型,我们可以在集合中看到泛型的影子: 为什么要有泛型? 以集合为例,假如没有泛型...

  • 泛型集合与非泛型集合,泛型

    ArrayList//非泛型集合 非泛型集合添加元素演示 public void Test1(){ ArrayLi...

  • 泛型

    泛型的使用 jdk 5.0新增的特性 在集合中使用泛型 ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构。...

  • 《Kotlin入门实战》CH8 | 泛型

    泛型 泛型是在Java5中引入的,泛型让集合框架可以重用代码,在没有泛型时候,集合框架中存储数据的类型都是Obje...

  • 泛型(jdk5.0新特性)

    在集合中使用泛型 1、集合接口或集合类在jdk5.0时都修改为带泛型的结构2、在实例化集合类时,可以指明具体的泛型...

网友评论

      本文标题:18-泛型集合

      本文链接:https://www.haomeiwen.com/subject/apzlxltx.html