问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用.NET Array类的Sort方法分类数值

发布网友 发布时间:2022-04-24 13:49

我来回答

1个回答

热心网友 时间:2022-04-24 15:19

本周,我们对这个主题进行扩充,着重讨论数组内容的分类。Array类提供了Sort方法,这个方法具有各种用途。我从简单的方法开始讨论,再以自定义分类结束。 Sort方法 使用Array类的静态Sort方法是分类数组内容的最简单方法。列表A通过对一组姓名进行分类,说明如何应用这个方法。 它生成了下面的结果,它显示了调用分类方法前后的姓名列表: 0. Howard, Ryan 1. Allen, Ray 2. Pujols, Albert 3. Iverson, Allen 0. Allen, Ray 1. Howard, Ryan 2. Iverson, Allen 3. Pujols, Albert 下面是对应的VB.NET代码: Dim x As Integer Dim names(3) As String names(0) = "Howard, Ryan" names(1) = "Allen, Ray" names(2) = "Pujols, Albert" names(3) = "Iverson, Allen" For x = 0 To (names.Length - 1) Console.WriteLine(CStr(x) + ". " + names(x).ToString()) Next x Array.Sort(names) For x = 0 To (names.Length - 1) Console.WriteLine(CStr(x) + ". " + names(x).ToString()) Next x Array类的Sort方法能够以各种形式对数组内容进行分类。既然你了解了这个方法的最简单应用形式,下面给出它的其它一些用途: Sort(Array, Array);根据第一个数组中的键对一对一维数组(一个包含键,另一个包含对应的项目)对象进行分类。 Sort(Array, IComparable):用指定的Icomparable接口分类一个一维数组中的元素。 Sort(Array, Array, IComparable):用指定的Icomparable接口根据第一个数组中的键对一对一维数组(一个包含键,另一个包含对应的项目)对象进行分类。 Sort(Array, Integer, Integer):对一个一维数组指定起点与终点位置(整数值)的某个部分中的元素进行分类。 Sort(Array, Array, Integer, Integer):根据第一个数组中的键对一对一维数组(一个包含键,另一个包含对应的项目)对象的某个部分进行分类。 Sort(Array, Integer, Integer, IComparable):用指定的Icomparable接口对一个一维数组某一部分中的元素进行分类。 Sort(Array, Array, Integer, Integer, IComparable):用指定的Icomparable接口根据第一个数组中的键对一对一维数组(一个包含键,另一个包含对应的项目)对象的某个部分进行分类。 你可以应用Array类的默认行为对整个数组和一个数组的某个部分进行分类;你还可以通过一个特殊的Icomparable接口指定详细的分类方法。列表B中的例子使用了两个数组,一个数组包含键而另一个数组包含要分类的相应项目。它和增加键数组的第一个例子相同。 得到的结果是根据键数组中的值分类的数组值(第二个数组在调用Sort方法时指定)。列表C中是对应的VB.NET代码。 你可以对代码稍微进行一些调整,调用适当的Sort方法,使它只分类一个对象。下面的代码利用前一个例子,但只对数组中的第二和第三个元素进行分类。 int[] keys = new int[4]; keys[0] = 11; keys[1] = 3; keys[2] = 8; keys[3] = 5; string[] names = new string[4]; names[0] = "Howard, Ryan"; names[1] = "Allen, Ray"; names[2] = "Pujols, Albert"; names[3] = "Iverson, Allen"; Array.Sort(keys, names, 1, 2); 下面是对应的VB.NET代码: Dim keys(3) As Integer keys(0) = 11 keys(1) = 3 keys(2) = 8 keys(3) = 5 Dim names(3) As String names(0) = "Howard, Ryan" names(1) = "Allen, Ray" names(2) = "Pujols, Albert" names(3) = "Iverson, Allen" Array.Sort(keys, names, 1, 2) 分类自定义对象 虽然简单的Sort方法十分方便,但你不能使用它对自定义数据类型的数组进行自动分类。毕竟,你不能指望.NET平台了解所有建立的对象!但是,你仍然能够使用Icomparer或Icomparable接口说明自定义对象的分类方法。 这些接口为你提供一个比较对象实例的方法,从而使分类更加方便。这两个接口的主要不同在于:在使用IComparable接口时必须把比较方法包括在类中,而使用Icomparer时则不必这样。两个接口的使用细节不在本文的讨论范围之内,不过下面我将用IComparable接口对一个自定义类数组进行分类。 在列表D中,我利用IComparable接口处理分类逻辑和它的类。如代码所示,我建立了一个Person类。注意,它使用IComparable接口并(在分类时)用CompareTo方法来进行比较。 在下一个例子中,建立一个Person数组对象时,又用到这个类。(IComparable接口所需要的)CompareTo方法是对Person类进行分类的关键,它将提交的对象与自身进行比较。接下来,再调用数组的Sort方法,利用Person类的分类机制,根据数组中每个对象的第一个名称属性进行其中的项目进行分类。列表E中是所使用且进行了分类的Person对象。列表F中是对应的VB.NET代码,它首先列出了Person类。 各种选择 任何数据似乎都要进行分类。毕竟,人们喜欢看到数据以逻辑方式显示。.NET的Array类提供了Sort方法,利用它的值或一个单独的关键值数组来简化数组内容的分类过程。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么描写小猫呢? 什么梦预示正缘要出现 壳外电场分布为什么与壳内电荷的位置无关啊 为什么带电球壳的内部场强处处为零? 电荷内或外感应球壳,球壳内部场强是否处处为零 win11回收站图标隐藏方法-win11回收站怎么隐藏 Windows 11回收站不见了怎么办_如何在Windows 11中恢复回收站图标 Win11回收站图标显示方法 win11显示回收站的方法_win11怎么显示回收站 华为荣耀5X评价,缺点,参数 荔枝老树施什么肥? 荔枝花雷打什么叶面肥? 用什么叶面肥可以让荔枝熟得颜色好? 荔枝用喜满地水溶肥可以吗? 微信里只知道名字不知道怎么才能加好友? 微信里只知道名字不知道怎么才能加好友? 如何用加好友 暖的成语有哪些 暖字怎么写 暖的四字成语有哪些 外汇交易中是什么原因导致走向毁灭的? 外汇交易中为什么跟单老是亏钱? 求问外汇交易账户出现亏损的原因有哪些? 在外汇交易亏损中的原因是什么 外汇交易盈亏的真正原因是什么 为什么90%的外汇交易者会亏损 外汇交易盈亏的真正原因是什么? 导致外汇交易亏损的原因有哪些 大蒜是“抗癌之王”的食物吗? 盗版win8.1重装正版win8具体该如何操作? 问一些关于3D打印的问题 关于3D打印机各界人士都有什么样的看法 投资人撤股怎么处理资金 入股协议的性质合作经营以岗定股。不得中途撤股撤资。不干了违约吗? 股东退股协议的写法与建议 我投资注册了一家公司,现在想撤资怎么操作? 这是什么虫子?是荞麦枕头里会出现的黑虫子吗? 在网上怎么打电话呢? 微信里的朋友圈的旧信息怎么删不掉呢?一删除怎么连明友的就没有了呢? Java Script数组排序 为什么points.sort()中带有参数? 是sort这个方法的重载吗? 有没有公司比较大,靠谱点的理财软件 那辣条能吃吗? 韩式拌饭酱怎么做 LOL龙女适合上分么?目前最高段位的龙女是什么段? 龙王、龙婆、龙女可谓神权的代表。读了本文,你认为孙悟空身上什体现出怎样的? 韩式拌饭的拌饭酱怎么做? 武侠之征服系统全本下载 石锅拌饭酱怎么做 跪求《冰与火之歌》中几个人物的结局 琼恩 艾丽娅 龙女 真的很喜欢他们!求剧透>_< 侵占集体财产罪立案标准