初识 C#/.net 基础【02】
发布日期:2021-05-04 14:31:08 浏览次数:29 分类:精选文章

本文共 3721 字,大约阅读时间需要 12 分钟。

ArrayList与List集合的对比分析及Dictionary的使用示例

ArrayList集合

ArrayList是一个非类型安全的泛型集合,内部使用Object类型存储数据。虽然其操作简单,性能较高,但由于缺乏类型安全,常常需要进行频繁的装箱拆箱操作,导致性能下降。

ArrayList的优点:

  • 简单易于使用,操作方法丰富
  • 适合处理非类型相关的数据存取
  • 性能较为优越,插入、移除操作效率高
  • ArrayList的劣势:

  • 存储数据时使用Object类型,容易出现类型不匹配问题
  • 需要频繁进行装箱拆箱操作,影响性能
  • 缺乏类型安全,可能导致运行时错误
  • 即使存储相同类型数据,使用时仍需进行类型转换
  • List集合

    List是一个类型安全的集合类,支持泛型定义,能够确保数据类型的严格性。其性能优于ArrayList,主要体现在以下几个方面:

    List的实现示例

    // 定义一个整数List
    List
    intList = new List<>();
    // 添加元素
    intList.add(123);
    // 索引操作需确保在合法范围内
    intList.set(0, 666); // 修改索引位置的元素
    // 插入特定位置的元素
    intList.insert(0, 999);
    // 移除指定索引的元素
    intList.remove(0);
    // 根据值移除元素(可能导致空指针异常,需谨慎使用)
    intList.remove(666);

    List的类型安全优势

  • 泛型定义允许指定数据类型,避免了装箱拆箱操作
  • 在存取和操作时,类型信息已知,减少了运行时错误
  • 在进行操作时,无需频繁进行类型转换
  • 可以避免使用反射等低效操作
  • List的指定类型使用

    List的泛型定义可以指定特定的类型,例如自定义类ClassYin02。以下示例展示了如何使用ClassYin02类型的List:

    // 定义一个ClassYin02类型的List
    List
    people = new ArrayList<>();
    // 添加对象
    ClassYin02 person01 = new ClassYin02() {
    public String Name { get; set; }
    public int Age { get; set; }
    public int Height { get; set; }
    };
    people.add(person01);
    // 移除指定索引的元素
    people.remove(0);
    // 移除特定对象
    people.remove(person01);

    需要注意的是,List的Remove方法基于对象引用而非值,因此必须确保移除操作的对象和List中的对象是同一个引用。

    ClassYin02类定义

    public class ClassYin02 {
    public String Name { get; set; }
    public int Age { get; set; }
    public int Height { get; set; }
    }

    Dictionary字典

    Dictionary是一个键值对存储的集合类,支持任意类型的键和值。它提供了丰富的操作方式,包括:

    Dictionary的使用方法

    // 创建一个String到String的Dictionary
    Dictionary
    dictionary01 = new Dictionary<>();
    // 使用Add方法添加键值对
    dictionary01.Add("小印01", "眼睛很大");
    dictionary01.Add("小印02", "体型标准");
    // 使用索引赋值方式添加键值对
    dictionary01["小印03"] = "性格很好";
    // 使用对象初始化器创建并添加多个键值对
    Dictionary
    dictionary02 = new Dictionary
    () {
    { 0001, "药品01" },
    { 0002, "药品02" },
    { 0003, "药品03" }
    };
    // Dictionary支持嵌套使用,如List
    类型的值
    Dictionary
    > huBei = new Dictionary
    >(); List
    huBeiList = new List
    (); huBeiList.Add("湖北"); huBeiList.Add("武汉"); huBei.Add("湖北", huBeiList); List
    jingZhouiList = new List
    (); jingZhouiList.Add("峰口"); jingZhouiList.Add("新题"); jingZhouiList.Add("白庙"); jingZhouiList.Add("万全"); huBei.Add("荆州", jingZhouiList);

    Dictionary的操作示例

    // 从Dictionary中取出值
    String value = dictionary01["小印01"];
    // 移除键值对
    dictionary01.Remove("小印01");

    foreach循环

    List的foreach遍历

    // 创建一个整数List并添加元素
    List
    intList00 = new ArrayList<>();
    intList00.add(1);
    intList00.add(2);
    intList00.add(4);
    intList00.add(5);
    intList00.add(6);
    intList00.add(10);
    // 使用foreach遍历List
    foreach (Integer i in intList00) {
    Console.WriteLine(i);
    }

    Dictionary的foreach遍历

    // 遍历Dictionary中的键值对
    foreach (KeyValuePair
    > i in huBei) {
    Console.WriteLine("键:" + i.Key);
    foreach (String j in i.Value) {
    Console.WriteLine(" 值:" + j);
    }
    }

    ClassYin02_1类及其应用

    public class ClassYin02_1 {
    public String Name { get; set; }
    public int Age { get; set; }
    public int Height { get; set; }
    public List
    GetXinXi() {
    List
    xinXiList = new ArrayList<>();
    ClassYin02_1 xinXi01 = new ClassYin02_1();
    xinXi01.Name = "小印01";
    xinXi01.Age = 22;
    xinXi01.Height = 173;
    xinXiList.Add(xinXi01);
    ClassYin02_1 xinXi02 = new ClassYin02_1();
    xinXi02.Name = "小印02";
    xinXi02.Age = 23;
    xinXi02.Height = 178;
    xinXiList.Add(xinXi02);
    ClassYin02_1 xinXi03 = new ClassYin02_1();
    xinXi03.Name = "小印03";
    xinXi03.Age = 24;
    xinXi03.Height = 180;
    xinXiList.Add(xinXi03);
    return xinXiList;
    }
    }

    总结

    ArrayList和List集合各有优劣,List集合因其类型安全和性能优势更适合需要严格数据类型控制的场景。Dictionary作为键值对存储工具,适用于需要快速查找和存储的场景。foreach循环和扩展方法则为集合操作提供了简洁和高效的方式。

    上一篇:C#/.net 之【记得来康康我】
    下一篇:初识 C#/.net 基础【01】

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月11日 15时50分50秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章