有序列表

本文详细介绍了C#中SortedList类的使用方法,包括如何创建、添加元素、遍历及异常处理等。通过示例代码展示了如何利用SortedList进行基于键的排序,以及如何处理键不存在的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有序列表

前言:如果需要基于键对所需集合排序。就可以使用SortedList<TKey,TValue>类。这个类按照键给元素排序。这个集合中的值和键都可以使用任意类型。

下面的例子创建了一个有序列表,其中的键和值都是string类型。默认的构造函数创建了一个空列表。在用Add()方法添加了两个名字。使用重载的构造函数,可以定义列表的容量。传递实现了IComparar<TKey>接口的对象。该接口用于给列表中的元素排序。

Add()方法的第一个参数是键(学号),第二个参数是值(学生的名字),索引器需要把键作为索引参数,如果键已经存在,Add()方法就会抛出一个异常。如果索引器使用相同的键,就会用新值替代旧值。

 

        static void Main(string[] args)
        {
            //有序列表
            SortedList<int, string> names = new SortedList<int, string>();
            names.Add(1, "张三");
            names.Add(2, "李四");
            names.Add(5, "王五");
            names.Add(3, "赵六");
            names.Add(4, "田七");
            foreach (KeyValuePair<int, string> keyValuePair in names)
            {
                Console.WriteLine("{0},{1}", keyValuePair.Key, keyValuePair.Value);
            }
            Console.ReadKey();
        }

 

 

可以使用foreach 语句遍历该列表。枚举器返回的元素是KeyValuePair<int, string>,其中包含了键和值。键可以用Key属性访问。值可以用Value属性访问。

 

            foreach (KeyValuePair<int, string> keyValuePair in names)
            {
                Console.WriteLine("{0},{1}", keyValuePair.Key, keyValuePair.Value);
            }

 


也可以使用Values和Keys属性访问值和键。因为Values属性返回的是IList<TValue>,Keys属性返回的是IList<TKey>,所以可以通过foreach语句使用这些属性:

 

            foreach (int key in names.Keys)
            {
                Console.WriteLine(key);
            }
            foreach (string value in names.Values)
            {
                Console.WriteLine(value);
            }

 

 

如果尝试使用索引器访问一个元素,但是所传递的键不存在,就会抛出一个KeyNotFoundException类型的异常。为了避免这个异常。可以使用ContainsKey()方法 如果所传递的的键存在于这个集合中。这个方法就返回true,也可以调用TryGetValue()方法,该方法尝试获得指定键的值。如果指定键对应的值不存在,该方法就不会抛出异常。

 

            string res;
            if (!names.TryGetValue(10, out res))
            {
                Console.WriteLine("{0}对应的键没有被找到!!", 10);
            }

 

    

转载于:https://www.cnblogs.com/MoRanQianXiao/p/7841208.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值