C#.NET 对HashTable数组进行按值排序

Stella981
• 阅读 651
C#.NET 对HashTable数组进行按值排序
  最近做了一个项目,需要对一个2维数组的值进行排序然后再取出对应的Key值。开始是用HashTable做的,不过HashTable中的排序只是对Key进行排序,如果想对值进行排序得用其它办法。下面我就把这种方法说下:

     一.我们先假设一个二维数组,用HashTable来储存值,当然你也可以去其它数组类来实现,这里就用HashTable。

   

HashTable ht=new HashTable();
ht.add("a",1);
ht.add("b",4);
ht.add("c",3);
ht.add("d",2);
 

 

我就不向里面添加内容了,我们假设这个数组中的Key为字符串,Value为Int类型(注:Value有重复值)。里面有若干数据。我们现在要实现的是将Value按从小到大排序,然后再取出排序过后的Key的值,请看代码:


复制代码
//先定义两个一维数组,分别用来存储Key和Value
string[] keyArray=new string[ht.Count];
int[] valueArray=new int[ht.Count];

//将HashTable中的Key和Value分别赋给上面两个数组
//注:有关CopyTo的用法请参考相关帮助文档
ht.Keys.CopyTo(keyArray,0); 
ht.Values.CopyTo(valueArray,0);

//下面就是对Value进行排序,当然需要按排序结果将Keys的值也作对应的排列
//Sort默认是升序排序,如果想用降序排序请在Sort排序后使用Array.Reverse()进行反向排序
Array.Sort(valueArray,keyArray);


复制代码
 

上面的代码已经将Value进行了升序排序,并且Key也作了相应的排列。

 这样的话keyArray的值就成:

"a"

"d"

"c"

"b"
点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
swift闭包表达式和尾随闭包
我们从一个Swift函数说起。并以此为例子。Swift的标准库提供了一个叫做sorted(by:)的方法,会根据你提供的排序闭包将已知类型的数组的值进行排序。一旦它排序完成,sorted(by:)方法会返回与原数组类型大小完全相同的一个新数组,该数组的元素是已排序好的。原始数组不会被sorted(by:)方法修改。我们以soted方法为例子
Stella981 Stella981
3年前
C语言 快速排序 Quick Sort
算法描述:快速排序一般是选择数组的第一个数据为对称轴参考值pivot。按照大小数组分割成左右两个区间。然后对左右两个区间再进行递归排序,知道结束为止。例子演示:数组:43251,长度:5,对称轴参考值选择第一个数据4。比它小的我们放到它的右边,比它大的我们放到左边。设置左右两个工作位置。指向开头和末尾。第一轮:4325
Stella981 Stella981
3年前
JS 对象数组Array 根据对象object key的值排序sort,很风骚哦
有个js对象数组varary\{id:1,name:"b"},{id:2,name:"b"}\需求是根据name或者id的值来排序,这里有个风骚的函数函数定义:function keysrt(key,desc) {  return function(a,b){    return desc ? ~~(ak
Stella981 Stella981
3年前
Key
KeyValue是用一个不可重复的key集合对应可重复的value集合。(典型的例子是字典:通过页码的key值找字的value值)。例子:key1—value1;key2—value2;key3—value3.SortedMap:如果一个Map可以根据key值排序,则称其为SortedMap。(如字典)!!注意数组和集合的区别:数组
Stella981 Stella981
3年前
HashMap Hashtable 的区别
Hashtable 和 HashMap作为 Map 的基本特性两者都实现了Map接口,基本特性相同\          对同一个Key,只会有一个对应的value值存在\          如何算是同一个Key?首先,两个key对象的hash值相同,其次,key对象的equals方法返回真内部数据结构Hashtab
Wesley13 Wesley13
3年前
Java面试总结(排序算法)
1.冒泡排序算法描述:两两比较,大的放后面2.选择排序算法描述:在m元数组中找到最小值的位置,然后将最小值的位置和第n(n0,1,2,....m1)位的值对调,排序k次则m元数组中前k(k<m)位的值已经排序好,m元数组中前k位的值不需要再进行排序,此时需要排序的元素只有mk个3.插入排序算
菜园前端 菜园前端
1年前
什么是归并排序?
原文链接:什么是归并排序(mergeSort)?主要分成两部分实现,分、合操作:分:把数组分成两半,在递归地对子数组进行"分"操作,直到分成一个个单独的数合:把两个数组合并为有序数组,再对有序数组进行合并,直到全部子数组合并为一个完整数组归并排序就是采用了
菜园前端 菜园前端
1年前
什么是快速排序?
原文链接:什么是快速排序(quickSort)?主要分成两部分实现,分区、递归操作。分区从数组中任意选择一个"基准",所有比基准小的元素放在基准前面,比基准大的元素放在基本后面。递归递归地对基准前后的子数组进行分区。算法步骤1.首先获取数组的第一个值(作为
小万哥 小万哥
11个月前
深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析
PythonMongoDB排序对结果进行排序使用sort()方法对结果进行升序或降序排序。sort()方法接受一个参数用于“字段名”,一个参数用于“方向”(升序是默认方向)。示例按名称按字母顺序对结果进行排序:pythonimportpymongomycl
小万哥 小万哥
7个月前
NumPy 数组排序、过滤与随机数生成详解
NumPy数组排序排序数组排序数组意味着将元素按特定顺序排列。顺序可以是数字大小、字母顺序、升序或降序等。NumPy的ndarray对象提供了一个名为sort()的函数,用于对数组进行排序。示例:pythonimportnumpyasnparrnp.arr