数据更新时的Key值判断(C#)

今天在工作过程中遇到下面的小问题,在更新数据时我想检查该数据Key是否已经存在,如果不存在则直接添加,否则则根据其他状态再判断是否需要更新。

这就需要首先获取已经存在的Key的集合。可以使用以下方法实现,比如Key值为一个字符串。

  1. List<string>
  2. 检查方法为Contains,该方法会遍历List的中的某一个值进行比较。性能较差。

  3. Dictionary<string, bool> 

    记录键和值的相应关系, 如果只是想检查某个键值是否存在,可以使用TryGetValue

    Object item;

    if(dict.TryGetValue(name, out item) == false)

    {

    return false;

    }

    return true;

    更准确的方法应该是使用ContainsKey

    该方法根据Key的Hash值(Index)从对应数组中查找是否存在该值。

  4. HashSet<string>

    如果只是想用于检查某个键是否存在,使用HashSet应该是最佳选择

    HashSet<int> data = new HashSet<int>();
        for (int i = 0; i < 1000000; i++)
        {
            data.Add(rand.Next(50000000));
        }
        bool contains = data.Contains(1234567); // etc

综上,最适合该问题的解决方法应该是使用HashSet。

时间: 2024-10-24 11:22:17

数据更新时的Key值判断(C#)的相关文章

Hadoop on Mac with IntelliJ IDEA - 6 解决KeyValueTextInputFormat读取时只有key值问题

本文讲述使用KeyValueTextInputFormat在Hadoop 0.x正常工作.Hadoop 1.2.1失效的解决过程. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.4, Hadoop 1.2.1 Hadoop放在虚拟机中,宿主机通过SSH连接,IDE和数据文件在宿主机.IDEA自身运行于JDK 1.8,IDEA工程及Hadoop使用JDK 1.6. 还在折腾Hadoop In Action第4章的代码,书的写法,如下所示. job.setInputF

vue v-for 遍历循环时的key值的报错

问题如下: [Vue warn] Avoid using non-primitive value as key, use string/number value instead. non-primitive表示的是对象 这里的[Vue warn]是指不要用对象或是数组作为key,用string或number作为key. :key相当于是索引的作用,提高循环性能,如果循环量较小,不写也可以的. 原文地址:https://www.cnblogs.com/exmyth/p/9091062.html

iOS 判断字典是否包含特定Key值

当面向字典开发或服务器返回的数据为字典时,应当判断字典内是否有对应的key值,从而避免返回key值为空而导致程序奔溃: NSDictionary *dict = self.datas[indexPath.row]; if([[dict allKeys] containsObject:@"key"]) { cell.textLabel.text = [dict valueForKey:@"ke y"]; } else { cell.textLabel.text = @

锐浪 报表, 当多行交叉报表时,对多行交叉报表中自由格中的多个字段控件,进行颜色控制. 取值 判断等实现

需要注意的点是: 1 . 要对自由格中对应的 字段框的背景填充方式改为:填充,否则没有效果. 2 . 代码中红色部门代码: Column 为明细网络对象属性中的 列集合 中的 交叉列的 名称,  Report.RunningDetailGrid.Columns.Item("Column_2") 3.  蓝色部门 为自由格中 控件的索引位置 ,也可以根据字段框的名称来进行控制如:  contentCell.Controls.Item("FieldBox8") 代码如下

spring boot redis序列化key-value时key值前面出现多余值

参考网址:https://blog.csdn.net/yunhaibin/article/details/9001198# 业务涉及将之前的一主二从redis集群改造后5主5从的redis集群,改造完成后发现一个问题,往redis里面写数据时,key值钱面会出现多余的值(比正常的key值里面多了个t6),如下图 用redis链接客户端访问时,会显示乱码,如下图 经参考大神文章,在redis.xml配置增加redis序列化相关匹配信息解决 <bean id="redisTemplate&qu

springboot中处理mybatis返回Map时key值的大小写

为了统一不同数据库返回key值大小写不一致的问题,特自定义ObjectWrapperFactory来做统一的处理 1,首先自定义MapWrapper /** * 将Map的key全部转换为小写 * */ public class MapKeyLowerWrapper extends MapWrapper { public MapKeyLowerWrapper(MetaObject metaObject, Map<String, Object> map) { super(metaObject,

java中key值可以重复的map:IdentityHashMap

在Java中,有一种key值可以重复的map,就是IdentityHashMap.在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 .在正常的Map 实现(如 HashMap)中,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2)). IdentityHashMap类利用哈希表实现 Map 接口,比较键(和值)时使用引用相等性代替对象相等性.该类不是 通用 Map 实现!此类

Map/HashMap 获取Key值的方法

1.通过  KeySet()方法 Map<String,Student> newmap = new HashMap<String,Student>(); //newmap HaspMap类型的集合 有唯一的Key,一个Key对应相应的学生 Student stu = new Student("11","Mary","79"); //创建一个学生对象 学号11; 姓名 Mary 成绩 79 newmap.put("

【语言】java中key值可以重复的map:IdentityHashMap

http://www.rigongyizu.com/java-identityhashmap/ 在java中, 有一种key值可以重复的map,就是IdentityHashMap.在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 .在正常的Map 实现(如 HashMap)中,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2)). IdentityHashMap类利用哈希表实