C# 自定义类型数组的排序

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace 数组排序
 8 {
 9     /// <summary>
10     /// IComparable : 接口
11     /// </summary>
12     public class Student : IComparable
13     {
14         public int ID { get; set; }
15         public string Name { get; set; }
16         public int Age { get; set; }
17
18         /// <summary>
19         /// 重写ToString方法
20         /// </summary>
21         /// <returns></returns>
22         public override string ToString()
23         {
24             return String.Format("ID={0} \t Name={1} \t Age={2}", this.ID, this.Name, this.Age);
25         }
26
27         /// <summary>
28         /// 实现IComparable接口的CompareTo()方法来通过【Age】来进行排序
29         /// </summary>
30         /// <param name="obj"></param>
31         /// <returns>1:大于 -1:小于 0:等于</returns>
32         public int CompareTo(object obj)
33         {
34             Student student = (Student)obj;
35             if ( this.Age > student.Age)
36             {
37                 return 1;
38             }
39             if (this.Age < student.Age)
40             {
41                 return -1;
42             }
43             return 0;
44         }
45     }
46
47     class Program
48     {
49         static void Main(string[] args)
50         {
51             Student[] student =
52             {
53                 new Student(){ID = 001, Name = "张三", Age = 15},
54                 new Student(){ID = 002, Name = "李四", Age = 16},
55                 new Student(){ID = 003, Name = "王五", Age = 18},
56                 new Student(){ID = 004, Name = "赵六", Age = 14}
57             };
58
59             //Console.WriteLine(student);     // 打印结果: 数组排序.Student[]
60             //Console.WriteLine(student[1]);    // 打印结果: ID=002, Name="李四", Age=16
61
62             Console.WriteLine("student数组未进行排序前:");
63             for (int i = 0; i < student.Length; ++i )
64             {
65                 Console.WriteLine("student[{0}] : {1}", i, student[i]);
66             }
67
68             /// Array.Sort():数组的静态方法:默认升序排列
69             Array.Sort(student);
70             Console.WriteLine("\n=================按照【Age】升序排序后===================");
71             foreach (var v in student)
72             {
73                 Console.WriteLine(v); //默认调用Student的ToString()方法
74             }
75
76             /// Array.Reverse()方法:反转整个一维数组的元素顺序
77             /// 如果要实现【降序】排列,则必须先通过Array.Sort(数组)的方法先将数组按升序有序排列后,再
78             /// 调用Array.Reverse()方法反转数组的元素,实现降序排列.
79             /// 如果要实现自定义类型的数组排序,则必须要
80             Array.Reverse(student);
81             Console.WriteLine("\n=================按照【Age】降序排序后===================");
82             foreach (Student st in student)
83             {
84                 Console.WriteLine(st);
85             }
86
87             Console.ReadLine();
88         }
89     }
90 }

时间: 2024-10-03 21:41:33

C# 自定义类型数组的排序的相关文章

实现比较器接口IComparable&lt;T&gt;,让自定义类型数组也能排序

using System; namespace LinqDemo1 { class Program { static void Main(string[] args) { Person[] persons = { new Person {FirstName = "Damon", LastName = "Hill"}, new Person {FirstName = "Niki", LastName = "Lauda"}, ne

CollectionsDemo1+2 List集合普通元素的排序,自定义类型的排序

CollectionsDemo1 List集合普通元素的排序,自然排序 /** * List集合的排序 * 排序List集合使用集合的工具类Collections的静态方法sort, * 该方法可以对指定List集合进行自然排序(从小到大) */ public class SortDemo1 { public static void main(String[] args) { //1,生成一个List<Insteger>集合 List<Integer> list = new Arr

go--sort对数组进行排序

package main import ( "sort" "fmt" ) func main(){ // 1.对整形数组排序 s1 := [...]int{1,3,43,3,5,6,32,56,7,8,53,} sort.Ints(s1[:]) //切片本质上是对底层数组的一个view,不能直接修改view,通过视图来修改 fmt.Println(s1) //[1 3 3 5 6 7 8 32 43 53 56] // 2.对字符串类型数组进行排序 s2:=[...

C#学习之自定义数组及其排序

在C#中对数组的定义比较灵活.这里着重说一下自定义数组和Array类的排序. 在Array类中通过属性Length就可以获取整个数组中数据的数量,可以通过foreach迭代数组. 使用Rank属性可以获取数组的维数,通过属性LongLength也可获取数组中数据的数量,但是基本上不用. 它是当数组中放置的数据量超出了整数的范围时才用. Array类中排序的方法比较简单,对于string 和 Int 类型直接用Array.Sort()就可以. 但是对于自定义的数组就需要在类中写出Array.Sor

java编程排序之自定义类型的集合,按业务需求排序

自定义引用类型放入集合中,按实际业务需求进行排序的两种思路 第一种思路: (1)自定义实体类实现java.lang.Comparable接口,重写public int compareTo(Object obj)方法.自定义业务比较规则 (2)利用java.util.Collections类的静态方法sort(List<自定义类型> list)进行排序(默认升序)或者.自己编写排序工具类.冒泡+compareTo(obj)方法 第二种思路 (1)自己编写业务比较规则类.实体类不用实现任何借口.业

对NSArray中自定义的对象进行排序

本文译自How to sort NSArray with custom objects. 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天程序则又一个Friend类,点菜程序会有一个Recipe类等.有时候我们希望在程序中显示的列表数据是按照一定顺序进行排列的,本文我们就来看看在iOS中有哪些方法可以对NSArray中的对象进行排序.下面是目录: 小引 使用NSComparator进行排序 使用NSDescriptor进行

oracle 自定义类型 type / create type

一:Oracle中的类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarchar2. 2.数值类型.如:int.number(p,s).integer.smallint. 3.日期类型.如:date.interval.timestamp. 4.PL/SQL类型.如:pls_integer.binary_integer.binary_double(10g).binary_float(10g).boolean.plsql类型是不能在sql环境中使

iOS中对NSArray中自定义的对象进行排序

本文译自How to sort NSArray with custom objects. 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天程序则又一个 Friend类,点菜程序会有一个Recipe类等.有时候我们希望在程序中显示的列表数据是按照一定顺序进行排列的,本文我们就来看看在iOS中有哪些 方法可以对NSArray中的对象进行排序.下面是目录: 小引 使用NSComparator进行排序 使用NSDescriptor

iOS探索:对NSArray中自定义的对象进行排序

本文译自How to sort NSArray with custom objects. 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天程序则又一个 Friend类,点菜程序会有一个Recipe类等.有时候我们希望在程序中显示的列表数据是按照一定顺序进行排列的,本文我们就来看看在iOS中有哪些 方法可以对NSArray中的对象进行排序.下面是目录: 小引 使用NSComparator进行排序 使用NSDescriptor