详解C#对Dictionary内容的通用操作

目录
  • 一、实现效果
    • 1.1实现的功能
    • 1.2实现的功能效果图
  • 二、实现核心
  • 三、使用方法
    • 3.1引用命名空间
    • 3.2使用示例

一、实现效果

1.1实现的功能

①添加信息到字典中;

②根据键获取值;

③根据值获取键;

④修改指定键的值;

⑤修改指定值为相同信息;

⑥根据键移除信息;

⑦根据值移除信息;

1.2实现的功能效果图

二、实现核心

/***
*	Title:"容器" 项目
*		主题:Dictionary的帮助类
*	Description:
*		功能:
*		    ①添加信息到字典中
*		    ②根据键获取值
*		    ③根据值获取键
*		    ④修改指定键的值
*		    ⑤修改指定值为相同信息
*		    ⑥根据键移除信息
*		    ⑦根据值移除信息
*	Version:0.1版本
*	Author:Coffee
*	Modify Recoder:
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Utils
{
    public class DictionaryHelper
    {
        /// <summary>
        /// 添加信息到字典中
        /// </summary>
        /// <typeparam name="TKey">键类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="dic">字典</param>
        /// <param name="key">需添加的键</param>
        /// <param name="value">需添加的值</param>
        public static void AddInfoToDic<TKey, TValue>(Dictionary<TKey, TValue> dic, TKey key, TValue value)
        {
            if (dic == null)
            {
                dic = new Dictionary<TKey, TValue>();
            }

            if (dic.ContainsKey(key))
            {
                dic[key] = value;
            }
            else
            {
                dic.Add(key, value);
            }
        }

        /// <summary>
        /// 根据键获取值
        /// </summary>
        /// <typeparam name="TKey">键类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="dic">字典</param>
        /// <param name="key">键</param>
        /// <returns>返回键对应的值</returns>
        public static TValue GetValueOfKey<TKey, TValue>(Dictionary<TKey, TValue> dic, TKey key)
        {
            TValue tmpValue = default(TValue);
            if (dic != null && dic.Count > 0)
            {
                if (dic.ContainsKey(key))
                {
                    tmpValue = dic[key];
                }
            }
            return tmpValue;
        }

        /// <summary>
        /// 根据值获取键
        /// </summary>
        /// <typeparam name="TKey">键类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="dic">字典</param>
        /// <param name="value">值</param>
        /// <returns>返回值对应的所有键</returns>
        public static List<TKey> GetKeyOfValue<TKey, TValue>(Dictionary<TKey, TValue> dic, TValue value)
        {
            List<TKey> keyList = new List<TKey>();
            foreach (KeyValuePair<TKey, TValue> kv in dic)
            {
                if (kv.Value.Equals(value))
                {
                    TKey tmpKey = kv.Key;
                    keyList.Add(tmpKey);
                }
            }
            return keyList;
        }

        /// <summary>
        /// 修改指定键的值
        /// </summary>
        /// <typeparam name="TKey">键类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="dic">字典</param>
        /// <param name="needModifyKey">需要修改的键</param>
        /// <param name="replaceValue">需要替换的值</param>
        /// <returns>返回修改结果(true:表示成功)</returns>
        public static bool ModifyInfoOfKey<TKey, TValue>(Dictionary<TKey, TValue> dic, TKey needModifyKey, TValue replaceValue)
        {
            if (dic == null || dic.Count < 1) return false;

            if (dic.ContainsKey(needModifyKey))
            {
                dic[needModifyKey] = replaceValue;
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 修改指定值为相同信息
        /// </summary>
        /// <typeparam name="TKey">键类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="dic">字典</param>
        /// <param name="needModifyValue">需要修改的值</param>
        /// <param name="replaceValue">需要替换的值</param>
        public static void ModifyInfoOfValue<TKey, TValue>(Dictionary<TKey, TValue> dic, TValue needModifyValue, TValue replaceValue)
        {
            if (dic == null || dic.Count < 1) return;

            for (int i = 0; i < dic.Count;)
            {
                TValue tmpValue = dic.ElementAt(i).Value;
                if (tmpValue.Equals(needModifyValue))
                {
                    TKey tmpKey = dic.ElementAt(i).Key;
                    dic[tmpKey] = replaceValue;

                    i = 0;
                }
                else
                {
                    i++;
                }
            }

        }

        /// <summary>
        /// 根据键移除信息
        /// </summary>
        /// <typeparam name="TKey">键类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="dic">字典</param>
        /// <param name="needDeleteKey">需要删除的键</param>
        /// <returns>返回移除结果(true:表示成功)</returns>
        public static bool RemoveInfoOfKey<TKey, TValue>(Dictionary<TKey, TValue> dic,TKey needDeleteKey)
        {
            if (dic.ContainsKey(needDeleteKey))
            {
                dic.Remove(needDeleteKey);

                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 根据值移除信息
        /// </summary>
        /// <typeparam name="TKey">键类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="dic">字典</param>
        /// <param name="needDeleteValue">需要删除的值</param>
        /// <returns>返回结果(true:表示成功)</returns>
        public static bool RemoveInfoOfValue<TKey, TValue>(Dictionary<TKey, TValue> dic, TValue needDeleteValue)
        {
            if (dic == null || dic.Count < 1) return false;

            int initCount = dic.Count;

            for (int i = 0; i < dic.Count;)
            {
                TValue tmpValue = dic.ElementAt(i).Value;
                if (tmpValue.Equals(needDeleteValue))
                {
                    TKey tmpKey = dic.ElementAt(i).Key;
                    dic.Remove(tmpKey);

                    i = 0;
                }
                else
                {
                    i++;
                }
            }

            if (initCount > dic.Count)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

    }//Class_end

}

三、使用方法

3.1引用命名空间

using Utils;

3.2使用示例

using System;
using System.Collections.Generic;
using Utils;

namespace Test_Dictionary
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            //获取到字典信息
            Dictionary<string, string> dic = GetDictionary();
            Console.WriteLine($"1-开始获取到的字典的所有信息如下:");
            ShowInfoOfDic(dic);

            //根据键获取到对应的值
            string queryKey = "L1";
            Console.WriteLine($"当前查询的键是:{queryKey}");
            string tmpValue = DictionaryHelper.GetValueOfKey(dic,queryKey);
            Console.WriteLine($"2-获取到——键:L1对应的值是:{tmpValue}");

            //根据值获取到对应的所有键
            string queryValue = "23.4";
            Console.WriteLine($"当前查询的值是:{queryValue}");
            List<string> tmpKey = DictionaryHelper.GetKeyOfValue(dic, queryValue);
            ShowInfoOfList(tmpKey);

            //修改指定键的值
            string needModifyKey = "L4";
            string replaceValue1 = "66";
            Console.WriteLine($"当前需要修改的键是:{needModifyKey}_替换为的值是:{replaceValue1}");
            DictionaryHelper.ModifyInfoOfKey(dic, needModifyKey, replaceValue1);
            Console.WriteLine($"修改的键是:{needModifyKey}_替换为的值是:{replaceValue1}后所有内容如下:");
            ShowInfoOfDic(dic);

            //修改指定值为相同信息
            string needModifyValue = "23.6";
            string replaceValue = "33.9";
            Console.WriteLine($"当前需要修改的值是:{needModifyValue}_替换为的值是:{replaceValue}");
            DictionaryHelper.ModifyInfoOfValue(dic,needModifyValue,replaceValue);
            Console.WriteLine($"修改的值是:{needModifyValue}_替换为的值是:{replaceValue}后所有内容如下:");
            ShowInfoOfDic(dic);

            //根据键移除信息
            string curRemoveKey = "L3";
            Console.WriteLine($"当前移除的键是:{curRemoveKey}");
            DictionaryHelper.RemoveInfoOfKey(dic,curRemoveKey);
            Console.WriteLine($"移除的键是:{curRemoveKey}后所有内容如下:");
            ShowInfoOfDic(dic);

            //根据值移除信息
            string curRemoveValue = "23.4";
            Console.WriteLine($"当前移除的值是:{curRemoveValue}");
            DictionaryHelper.RemoveInfoOfValue(dic, curRemoveValue);
            Console.WriteLine($"移除的值是:{curRemoveValue}后所有内容如下:");
            ShowInfoOfDic(dic);

            Console.ReadLine();
        }

        //获取一个字典
        public static Dictionary<string, string> GetDictionary()
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();

            DictionaryHelper.AddInfoToDic(dic, "L1","23.4");
            DictionaryHelper.AddInfoToDic(dic, "L2", "23.6");
            DictionaryHelper.AddInfoToDic(dic, "L3", "23.8");
            DictionaryHelper.AddInfoToDic(dic, "L4", "23.4");
            DictionaryHelper.AddInfoToDic(dic, "L5", "23.6");
            DictionaryHelper.AddInfoToDic(dic, "L6", "23.4");

            return dic;
        }

        //显示字典中的所有信息
        private static void ShowInfoOfDic(Dictionary<string,string> dic)
        {
            if (dic == null || dic.Count < 1) return;

            foreach (var item in dic)
            {
                Console.WriteLine($"键:{item.Key} 值:{item.Value}");
            }
            Console.WriteLine($"--------------显示信息完成______当前字典:{dic.GetType().Name} 共有数据:{dic.Count} 条\r\n");
        }

        //显示列表信息
        private static void ShowInfoOfList(List<string> list)
        {
            if (list == null || list.Count < 1) return;
            foreach (var item in list)
            {
                Console.WriteLine($"对应内容:{item}");
            }
            Console.WriteLine($"--------------显示信息完成______当前列表:{list.GetType().Name} 共有数据:{list.Count} 条\r\n");
        }

    }//Class_end
}

到此这篇关于详解C#对Dictionary内容的通用操作的文章就介绍到这了,更多相关C# Dictionary内容操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#实现Array,List,Dictionary相互转换

    一.代码实例实现功能 将Array转换为List 将List转换为Array 将Array转换为Dictionary 将Dictionary转换为Array 将List转换为Dictionary 将Dictionary转换为List 二.代码实现 学生类 class Student { public int Id { get; set; } public string Name { get; set; } public string Gender { get; set; } } 转换实现代码 s

  • 分析C# Dictionary的实现原理

    一.理论知识 对于Dictionary的实现原理,其中有两个关键的算法,一个是Hash算法,一个是用于应对Hash碰撞冲突解决算法. 1.1.Hash算法 Hash算法是一种数字摘要算法,它能将不定长度的二进制数据集给映射到一个较短的二进制长度数据集,常见的MD5算法就是一种Hash算法,通过MD5算法可对任何数据生成数字摘要.而实现了Hash算法的函数我们叫她Hash函数.Hash函数有以下几点特征. 相同的数据进行Hash运算,得到的结果一定相同.HashFunc(key1) == Hash

  • c# 遍历 Dictionary的四种方式

    一:背景 1. 讲故事 昨天在 StackOverflow 上看到一个很有趣的问题,说: 你会几种遍历字典的方式,然后跟帖就是各种奇葩的回答,挺有意思,马上就要国庆了,娱乐娱乐吧,说说这种挺无聊的问题

  • c# List和Dictionary常用的操作

    本文主要汇总了在开发过程中,使用List和Dictionary常用的方法,例如增.删.改.查.排序等等各种常用操作. 在平时的开发过程中,List和Dictionary是我们经常使用到的数据结构,而且由于本人记性又差有些方法长时间不用就都忘了,所以总结出此博客,用于记录和分享一下关于这两种数据结构的使用方法. 一.List 首先对于这些内容最权威和完整介绍的地方就是微软的官方文档,里面全面且详细的介绍了Lits的所有属性及方法,经常查看官方文档是一个非常好的习惯.本文将会总结出在日常开发过程中相

  • C# 泛型字典 Dictionary的使用详解

    本文主要介绍了C# 泛型字典 Dictionary的使用详解,分享给大家,具体如下: 泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱. 很多非泛型集合类都有对应的泛型集合类,我觉得最好还是养成用泛型集合类的好习惯,他不但性能上好而且 功能上要比非泛型类更齐全.下面是常用的非泛型集合类以及对应的泛型集合类 非泛型集合类 泛型集合类 Ar

  • 详解C#对Dictionary内容的通用操作

    目录 一.实现效果 1.1实现的功能 1.2实现的功能效果图 二.实现核心 三.使用方法 3.1引用命名空间 3.2使用示例 一.实现效果 1.1实现的功能 ①添加信息到字典中: ②根据键获取值: ③根据值获取键: ④修改指定键的值: ⑤修改指定值为相同信息: ⑥根据键移除信息: ⑦根据值移除信息: 1.2实现的功能效果图 二.实现核心 /*** * Title:"容器" 项目 * 主题:Dictionary的帮助类 * Description: * 功能: * ①添加信息到字典中 *

  • 详解python中的文件与目录操作

    详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os.getcwd()) Current directory is D:\Python36 2.代码2 如果将上面的脚本写入到文件再运行 Current directory is E:\python\work 二 获得目录的内容 Python代码 >>> os.listdir (os.getcwd

  • 详解Docker镜像与容器的常见操作

    镜像加速器 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.国内很多云服务商都提供了国内加速器服务,例如: 网易云加速器 https://hub-mirror.c.163.com 阿里云加速器(需登录账号获取): https://cr.console.aliyun.com/cn-hangzhou/mirrors 国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档. 在CentOS7系统

  • 详解python的xlwings库读写excel操作总结

    一.总结(点击显示或隐藏总结内容) 一句话总结: xlwings 是 Python 中操作Excel的一个第三方库,支持.xls读写,.xlsx读写,操作非常简单,功能也很强大 1.xlwings 中的逻辑:应用->工作簿->工作表->范围 对应的代码? 应用:一个应用(一个xlwings程序):app = xw.App(visible=True, add_book=False) 工作簿(book):excel文件(excel程序):wb = app.books.add() 工作表(sh

  • 详解Python+OpenCV进行基础的图像操作

    目录 介绍 形态变换 腐蚀 膨胀 创建边框 强度变换 对数变换 线性变换 去噪彩色图像 使用直方图分析图像 介绍 众所周知,OpenCV是一个用于计算机视觉和图像操作的免费开源库. OpenCV 是用 C++ 编写的,并且有数千种优化的算法和函数用于各种图像操作.很多现实生活中的操作都可以使用 OpenCV 来解决.例如视频和图像分析.实时计算机视觉.对象检测.镜头分析等. 许多公司.研究人员和开发人员为 OpenCV 的创建做出了贡献.使用OpenCV 很简单,而且 OpenCV 配备了许多工

  • 详解Matlab中自带的Java操作合集

    目录 1 获取鼠标在全屏位置 2 获取当前剪切板内容 3 内容复制到剪切板 4 获取鼠标处像素颜色 5 获取屏幕截图 6 创建java窗口(并使其永远在最上方) 7 透明窗口 1 获取鼠标在全屏位置 屏幕左上角为坐标原点,获取鼠标位置和获取鼠标像素颜色建议和while循环或者timer函数结合使用: import java.awt.MouseInfo; mousepoint=MouseInfo.getPointerInfo().getLocation(); mousepoint=[mousepo

  • Java详解IO流创建读取与写入操作

    目录 概念 io流对应的方法 一.File方法(创建文件) 二.FileInputStream(获取字节方法)输入流 三.FileOutputStream(写入字节方法)输出流 总结 概念 IO流可以初步的理解为数据间的传输,我们将一组数据入:1234567,将他们从hello文件中转入haha文件中,使用程序的方法进行转入的话则需要一个一个的传入,即为一个字节一个字节的传输,我们每次只能传入或读取一个字节,这就是io流的大致流程,io流对任何类型的文件都可以进行读取.如:文本文件,图片,歌曲m

  • 详解MyBatisPlus如何实现分页和查询操作

    目录 1.定义查询字段 2.修改分页函数接口 3.修改分页实现方法 4.修改控制层 5.效果体验 <SpringBoot整合MybatisPlus实现增删改查功能>在这篇文章中,我们详细介绍了分页的具体实现方法.但是,在日常的开发中还需要搜索功能的.下面让我们一起动起手来,实现一下吧. 1.定义查询字段 定义一个类,存放需要用到的查询字段.如下: package com.didiplus.modules.sys.domain.entity.dto; import lombok.Data; /*

  • 详解Python中键盘鼠标的相关操作

    目录 一.前言 二.pyautogui模块 三.鼠标相关操作 1.鼠标移动 2.获取鼠标位置 3.鼠标点击 4.按松鼠标 5.拖动窗口 6.上下滑动 7.小程序——鼠标操控术2.0 8.小程序——连点器 四.键盘相关操作 1.按键的按松 2.键入字符串 3.热键 4.小程序——轰炸器 5.小程序——520个我爱你 五.尾声 一.前言 恭喜你,学明白类,你已经学会所有基本知识了. 这章算是一个娱乐篇,十分简单,了解一下pyautogui模块,这算是比较好学还趣味性十足的,而且可以做许多小程序. 本

  • ASP 中 DateDiff 函数详解 主要实现两日期加减操作

    ASP 中 DateDiff 函数详解DateDiff 函数 描述  返回两个日期之间的时间间隔.  语法  DateDiff(interval, date1, date2 [,firstdayofweek][, firstweekofyear]])  DateDiff 函数的语法有以下参数: 参数 描述  interval 必选.字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔.有关数值,请参阅"设置"部分.  date1, date2 必选.日期表达式.用于计

随机推荐