网站建设linuxwordpress免费插件分享
news/
2025/9/27 2:05:12/
文章来源:
网站建设linux,wordpress免费插件分享,手机怎么解除禁止访问网页,设计师专用网站一、概述
SortedList 类代表了一系列按照键来排序的键/值对#xff0c;这些键值对可以通过键和索引来访问。排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。 如果您使用索引访问各项#xff0c;则它是一个动态数组#xff08;ArrayList#xff0…一、概述
SortedList 类代表了一系列按照键来排序的键/值对这些键值对可以通过键和索引来访问。排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。 如果您使用索引访问各项则它是一个动态数组ArrayList.如果您使用键访问各项则它是一个哈希表Hashtable。集合中的各项总是按键值排序。
二、SortedList 类的方法和属性
常用的属性
属性描述Capacity获取或设置 SortedList 的容量。Count获取 SortedList 中的元素个数。IsFixedSize获取一个值表示 SortedList 是否具有固定大小。IsReadOnly获取一个值表示 SortedList 是否只读。Item获取或设置与 SortedList 中指定的键相关的值。Keys获取 SortedList 中的键。Values获取 SortedList 中的值。
三、常用的方法
序号方法名描述1public virtual void Add( object key, object value );向 SortedList 添加一个带有指定的键和值的元素。2public virtual void Clear();从 SortedList 中移除所有的元素。3public virtual bool ContainsKey( object key );判断 SortedList 是否包含指定的键。4public virtual bool ContainsValue( object value );判断 SortedList 是否包含指定的值。5public virtual object GetByIndex( int index );获取 SortedList 的指定索引处的值。6public virtual object GetKey( int index );获取 SortedList 的指定索引处的键。7public virtual IList GetKeyList();获取 SortedList 中的键。8public virtual IList GetValueList();获取 SortedList 中的值。9public virtual int IndexOfKey( object key );返回 SortedList 中的指定键的索引索引从零开始。10public virtual int IndexOfValue( object value );返回 SortedList 中的指定值第一次出现的索引索引从零开始。11public virtual void Remove( object key );从 SortedList 中移除带有指定的键的元素。12public virtual void RemoveAt( int index );移除 SortedList 的指定索引处的元素。13public virtual void TrimToSize();设置容量为 SortedList 中元素的实际个数。
四、实例
using System;
using System.Collections;namespace CollectionsApplication{class Program{static void Main(string[] args){SortedList sl new SortedList();sl.Add(001, Zara Ali);sl.Add(002, Abida Rehman);sl.Add(003, Joe Holzner);sl.Add(004, Mausam Benazir Nur);sl.Add(005, M. Amlan);sl.Add(006, M. Arif);sl.Add(007, Ritesh Saikia);if (sl.ContainsValue(Nuha Ali)){Console.WriteLine(This student name is already in the list);}else{sl.Add(008, Nuha Ali);}// 获取键的集合 ICollection key sl.Keys;foreach (string k in key){Console.WriteLine(k : sl[k]);}}}
}
当上面的代码被编译和执行时它会产生下列结果
001: Zara Ali
002: Abida Rehman
003: Joe Holzner
004: Mausam Banazir Nur
005: M. Amlan
006: M. Arif
007: Ritesh Saikia
008: Nuha Ali
五、Sort
Sort 是 ListT 自带的排序方法其排序特性如下
1、默认升序
2、会改变原列表
3、不稳定排序相等元素的相对次序可能会改变。 方法一常规
Listint intList new Listint {4, 5, 1, 3, 2};// 升序
intList.Sort(); // 1 2 3 4 5// 降序先升序再反转
intList.Sort();
intList.Reverse(); // 5 4 3 2 1
方法二CompareTo
Listint intList new Listint {4, 5, 1, 3, 2};// 升序
intList.Sort((x, y) x.CompareTo(y)); // 1 2 3 4 5// 降序
intList.Sort((x, y) y.CompareTo(x)); // 5 4 3 2 1六、示例 自定义 Student 类
public class Student
{public string name {get; set;}public int age {get; set;}public int score {get; set;}
}
单属性排序
void dumpList(ListStudent stuList, string desc)
{Console.WriteLine(desc);foreach(var student in stuList){Console.Write(name {0}, age {1}, score {2}, student.name, student.age, student.score);Console.WriteLine();}
}ListStudent stuList new ListStudent {new Student() {name 张三, age 20, score 95},new Student() {name 李四, age 19, score 99},new Student() {name 王五, age 21, score 95},new Student() {name 赵六, age 20, score 90},new Student() {name 陈七, age 22, score 95},new Student() {name 刘八, age 21, score 92}
};dumpList(stuList, -----原始列表-----);
// -----原始列表-----
// name 张三, age 20, score 95
// name 李四, age 19, score 99
// name 王五, age 21, score 95
// name 赵六, age 20, score 90
// name 陈七, age 22, score 95
// name 刘八, age 21, score 92stuList.Sort((x, y) x.score.CompareTo(y.score));
dumpList(stuList, -----按 score 属性升序-----);
// -----按 score 属性升序-----
// name 赵六, age 20, score 90
// name 刘八, age 21, score 92
// name 张三, age 20, score 95
// name 陈七, age 22, score 95
// name 王五, age 21, score 95
// name 李四, age 19, score 99stuList.Sort((x, y) y.age.CompareTo(x.age));
dumpList(stuList, -----按 age 属性降序-----);
// -----按 age 属性降序-----
// name 陈七, age 22, score 95
// name 王五, age 21, score 95
// name 刘八, age 21, score 92
// name 赵六, age 20, score 90
// name 张三, age 20, score 95
// name 李四, age 19, score 99
嵌套排序
ListStudent stuList new ListStudent {new Student() {name 张三, age 20, score 95},new Student() {name 李四, age 19, score 99},new Student() {name 王五, age 21, score 95},new Student() {name 赵六, age 20, score 90},new Student() {name 陈七, age 22, score 95},new Student() {name 刘八, age 21, score 92}
};dumpList(stuList, -----原始列表-----);
// -----原始列表-----
// name 张三, age 20, score 95
// name 李四, age 19, score 99
// name 王五, age 21, score 95
// name 赵六, age 20, score 90
// name 陈七, age 22, score 95
// name 刘八, age 21, score 92stuList.Sort((x, y) {int ret y.score.CompareTo(x.score);if (ret 0){return x.age.CompareTo(y.age);}else{return ret;}
});dumpList(stuList, -----嵌套排序按 score 降序score 相同则按 age 升序-----);
// -----嵌套排序按 score 降序score 相同则按 age 升序-----
// name 李四, age 19, score 99
// name 张三, age 20, score 95
// name 王五, age 21, score 95
// name 陈七, age 22, score 95
// name 刘八, age 21, score 92
// name 赵六, age 20, score 90
ps
obj1.CompareTo(obj2) 返回值int
大于01obj1 在 obj2 后面 等于00obj1 和 obj2 在同一位置 小于0-1obj1 在 obj2 前面 七、OrderBy/OrderByDescending OrderBy/OrderByDescending OrderBy升序OrderByDescending降序是通用的序列排序方法其排序特性如下
1、使用前必须先引入命名空间System.Linq
2、不会改变原列表
3、稳定排序相等元素的相对次序不会改变。
基本数据类型
Listint intList new Listint {4, 5, 1, 3, 2};// 升序
intList intList.OrderBy(x x).ToList(); // 1 2 3 4 5// 降序
intList intList.OrderByDescending(x x).ToList(); // 5 4 3 2 1
单属性排序
ListStudent stuList new ListStudent {new Student() {name 张三, age 20, score 95},new Student() {name 李四, age 19, score 99},new Student() {name 王五, age 21, score 95},new Student() {name 赵六, age 20, score 90},new Student() {name 陈七, age 22, score 95},new Student() {name 刘八, age 21, score 92}
};dumpList(stuList, -----原始列表-----);
// -----原始列表-----
// name 张三, age 20, score 95
// name 李四, age 19, score 99
// name 王五, age 21, score 95
// name 赵六, age 20, score 90
// name 陈七, age 22, score 95
// name 刘八, age 21, score 92stuList stuList.OrderBy(obj obj.score).ToList();
dumpList(stuList, -----按 score 属性升序-----);
// -----按 score 属性升序-----
// name 赵六, age 20, score 90
// name 刘八, age 21, score 92
// name 张三, age 20, score 95
// name 王五, age 21, score 95
// name 陈七, age 22, score 95
// name 李四, age 19, score 99stuList stuList.OrderByDescending(obj obj.age).ToList();
dumpList(stuList, -----按 age 属性降序-----);
// -----按 age 属性降序-----
// name 陈七, age 22, score 95
// name 刘八, age 21, score 92
// name 王五, age 21, score 95
// name 赵六, age 20, score 90
// name 张三, age 20, score 95
// name 李四, age 19, score 99
嵌套排序
ListStudent stuList new ListStudent {new Student() {name 张三, age 20, score 95},new Student() {name 李四, age 19, score 99},new Student() {name 王五, age 21, score 95},new Student() {name 赵六, age 20, score 90},new Student() {name 陈七, age 22, score 95},new Student() {name 刘八, age 21, score 92}
};dumpList(stuList, -----原始列表-----);
// -----原始列表-----
// name 张三, age 20, score 95
// name 李四, age 19, score 99
// name 王五, age 21, score 95
// name 赵六, age 20, score 90
// name 陈七, age 22, score 95
// name 刘八, age 21, score 92stuList stuList.OrderByDescending(obj obj.score).ThenBy(obj obj.age).ToList();
dumpList(stuList, -----嵌套排序按 score 降序score 相同则按 age 升序-----);
// -----嵌套排序按 score 降序score 相同则按 age 升序-----
// name 李四, age 19, score 99
// name 张三, age 20, score 95
// name 王五, age 21, score 95
// name 陈七, age 22, score 95
// name 刘八, age 21, score 92
// name 赵六, age 20, score 90stuList stuList.OrderBy(obj obj.score).ThenByDescending(obj obj.age).ToList();
dumpList(stuList, -----嵌套排序按 score 升序score 相同则按 age 降序-----);
// -----嵌套排序按 score 升序score 相同则按 age 降序-----
// name 赵六, age 20, score 90
// name 刘八, age 21, score 92
// name 陈七, age 22, score 95
// name 王五, age 21, score 95
// name 张三, age 20, score 95
// name 李四, age 19, score 99
ps
OrderBy/OrderByDescending 返回序列的类型为 IOrderedEnumerableTSource可以用 ToList 将其转为列表
即
stuList stuList.OrderBy(obj obj.score).ToList(); IOrderedEnumerableStudent query stuList.OrderBy(obj obj.score);
stuList query.ToList();
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919007.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!