
初识 C#/.net 基础【02】
简单易于使用,操作方法丰富 适合处理非类型相关的数据存取 性能较为优越,插入、移除操作效率高 存储数据时使用Object类型,容易出现类型不匹配问题 需要频繁进行装箱拆箱操作,影响性能 缺乏类型安全,可能导致运行时错误 即使存储相同类型数据,使用时仍需进行类型转换 泛型定义允许指定数据类型,避免了装箱拆箱操作 在存取和操作时,类型信息已知,减少了运行时错误 在进行操作时,无需频繁进行类型转换 可以避免使用反射等低效操作
发布日期:2021-05-04 14:31:08
浏览次数:29
分类:精选文章
本文共 3721 字,大约阅读时间需要 12 分钟。
ArrayList与List集合的对比分析及Dictionary的使用示例
ArrayList集合
ArrayList是一个非类型安全的泛型集合,内部使用Object类型存储数据。虽然其操作简单,性能较高,但由于缺乏类型安全,常常需要进行频繁的装箱拆箱操作,导致性能下降。
ArrayList的优点:
ArrayList的劣势:
List集合
List是一个类型安全的集合类,支持泛型定义,能够确保数据类型的严格性。其性能优于ArrayList,主要体现在以下几个方面:
List的实现示例
// 定义一个整数ListListintList = 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类型的ListListpeople = 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的DictionaryDictionarydictionary01 = 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并添加元素ListintList00 = new ArrayList<>();intList00.add(1);intList00.add(2);intList00.add(4);intList00.add(5);intList00.add(6);intList00.add(10);// 使用foreach遍历Listforeach (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 ListGetXinXi() { 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循环和扩展方法则为集合操作提供了简洁和高效的方式。
发表评论
最新留言
很好
[***.229.124.182]2025年04月11日 15时50分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Github教程(3)
2019-03-06
vue实现简单的点击切换颜色
2019-03-06
vue3 template refs dom的引用、组件的引用、获取子组件的值
2019-03-06
深入浅出mybatis
2019-03-06
Zookeeper快速开始
2019-03-06
cas客户端流程详解(源码解析)--单点登录
2019-03-06
882. Reachable Nodes In Subdivided Graph
2019-03-06
402. Remove K Digits
2019-03-06
375. Guess Number Higher or Lower II
2019-03-06
650. 2 Keys Keyboard
2019-03-06
764. Largest Plus Sign
2019-03-06
214. Shortest Palindrome
2019-03-06
916. Word Subsets
2019-03-06
869. Reordered Power of 2
2019-03-06
1086 Tree Traversals Again
2019-03-06
1127 ZigZagging on a Tree
2019-03-06
1062 Talent and Virtue
2019-03-06
1045 Favorite Color Stripe
2019-03-06
8-14
2019-03-06
GCD
2019-03-06