c#哈希表 怎么对value(double类型)进行排序 按顺序输出key(string类型)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#哈希表 怎么对value(double类型)进行排序 按顺序输出key(string类型)相关的知识,希望对你有一定的参考价值。

Hashtable ht = new Hashtable();
ht.Add("a1", 0.348);
ht.Add("1c", 38.242);
ht.Add("0b", 7.52);
string[] keys = new string[ht.Count];
double[] values = new double[ht.Count];
ht.Keys.CopyTo(keys, 0);
ht.Values.CopyTo(values, 0);
Array.Sort(values, keys);
foreach (string k in keys)
    Console.WriteLine(k);

参考技术A 我不知道题主应用在什么场景,在正常情况下,但我们使用哈希表是希望根据key去找value,这样才能用空间换时间,提高程序的性能。

如果需要对value进行排序,就要考虑是不是开始key和value就选错方向了
参考技术B 用字典的话可以给你写一下代码,哈希表就算了。

hash哈希操作

hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象.其操作跟String操作非常类似

 

1.将哈希表 key 中的字段 field 的值设为 value HSET key field value 

2.获取存储在哈希表中指定字段的值。HGET key field 

3.同时将多个 field-value (域-值)对设置到哈希表 key 中。HMSET key field1 value1 [field2 value2 ] 

4.获取所有给定字段的值HMGET key field1 [field2] 

5.查看哈希表 key 中,指定的字段是否存在。HEXISTS key field 

6.删除一个或多个哈希表字段HDEL key field1 [field2] 

7.将哈希表 key 中的字段 field 的值设为 value 。HSET key field value 

8.获取哈希表中字段的数量HLEN key 

9.获取所有哈希表中的字段HKEYS key 

10.获取哈希表中所有值HVALS key 

11.获取在哈希表中指定 key 的所有字段和值HGETALL key 

12.为哈希表 key 中的指定字段的整数值加上增量 increment 。HINCRBY key field increment 

 

hash代码操作:

package com.study.util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class RedisHash {

    public static void main(String[] args) {
        Jedis jedis = RedisUtil.getJedis();
        //将user的id赋值为1
        jedis.hset("user", "id", "1");
        //获取user的id值
        String id = jedis.hget("user", "id");
        System.out.println("id:" + id);
        
        //设置user的name为zs,age为18
        Map<String,String> hash = new HashMap<>();
        hash.put("name", "zs");
        hash.put("age", "18");
        jedis.hmset("user", hash);
        //获取user的id,name,age值
        List<String> hList = jedis.hmget("user", "id","name","age");
        System.out.print("user的id,name,age值为:");
        for (String value : hList) {
            System.out.print(value);
        }
        System.out.println();
        
        //查看user是否有id字段
        boolean hexists = jedis.hexists("user", "id");
        System.out.println("user是否有id字段:" + hexists);
        
        //删除user中的age字段
        jedis.hdel("user", "age");
        System.out.print("删除user中的age字段后user的字段:");
        //获取user的所有字段
        Set<String> keys = jedis.hkeys("user");
        for (String key : keys) {
            System.out.print(key);
        }
        System.out.println();
        //将user的name值改为zhangsan
        jedis.hset("user", "name", "zhangsan");
        //获取user字段的数量
        long length = jedis.hlen("user");
        System.out.println("user字段的数量:" + length);
        
        //获取user字段的所有值
        List<String> values = jedis.hvals("user");
        System.out.print("user字段所有值:");
        for (String value : values) {
            System.out.print(value);
        }
        System.out.println();
        
        //获取user的所有字段及对应的值
        Map<String,String> map = jedis.hgetAll("user");
        for (String key : map.keySet()) {
            System.out.println(key + "->" + map.get(key));
        }
        
        jedis.close();
    }
}
View Code

 

代码git地址:https://gitee.com/sjcq/redis.git

以上是关于c#哈希表 怎么对value(double类型)进行排序 按顺序输出key(string类型)的主要内容,如果未能解决你的问题,请参考以下文章

C#中哈希表(HashTable)的用法详解以及和Dictionary比较

请教c#中double类型转化为long类型的方法, 以及对double四舍五入的方法

C#中HashTable的用法

C#中HashTable的用法

c#中怎么把double类型转换成int类型

Redis数据类型(Hash)