泛型之Dictionary

Dictionary<string, string>是一个泛型

他本身有集合的功能有时候可以把它看成数组

他的结构是这样的:Dictionary<[key], [value]>

他的特点是存入对象是需要与[key]值一一对应的存入该泛型

通过某一个一定的[key]去找到对应的值

 Dictionary<int, string> dic = new Dictionary<int, string>();
            dic.Add(1,"one");
            dic.Add(2,"two");
            dic.Add(3,"one");
            //提取元素的方法
            string a = dic[1];
            string b = dic[2];
            string c = dic[3];
            Console.WriteLine(a+"|"+b+"|"+c);
            Console.ReadKey();

//1、2、3是键,分别对应“one”“two”“one”


//上面代码中分别把值赋给了a,b,c


//注意,键相当于找到对应值的唯一标识,所以不能重复


//但是值可以重复

 
Dictionary<int, string> dic = new Dictionary<int, string>();
            dic.Add(1, "HaHa");
            dic.Add(5, "HoHo");
            dic.Add(3, "HeHe");
            dic.Add(2, "HiHi");
            dic.Add(4, "HuHu");
//通过Linq 写排序
            var result = from mm in dic orderby mm.Key select mm;
            foreach(KeyValuePair<int,string> cc in result){
                Console.WriteLine("key:{0},Value:{1}",cc.Key,cc.Value);

            }
            Console.ReadKey();

Dictionary的基本用法。假如

需求:现在要导入一批数据,这些数据中有一个称为公司的字段是我们数据库里已经存在了的,目前我们需要把每个公司名字转为ID后才存入数据库。

分析:每导一笔记录的时候,就把要把公司的名字转为公司的ID,这个不应该每次都查询一下数据库的,因为这太耗数据库的性能了。

解决方案:在业务层里先把所有的公司名称及相应的公司ID一次性读取出来,然后存放到一个Key和Value的键值对里,然后实现只要把一个公司的名字传进去,就可以得到此公司相应的公司ID,就像查字典一样。对,我们可以使用字典Dictionary操作这些数据。

示例:SetKeyValue()方法相应于从数据库里读取到了公司信息。

public  static void Main(string[] args)
        {
            GetKeyValue();
        }

        static  Dictionary<string, int> SetKeyValue() {
            Dictionary<string, int> dic = new Dictionary<string, int>();
            dic.Add("公司1", 1);
            dic.Add("公司2", 2);
            dic.Add("公司3", 3);
            dic.Add("公司4", 4);
            return dic;

        }
        static void GetKeyValue() {
            //测试得到公司2的值
            Dictionary<string, int> myDictionary = SetKeyValue();
            Console.WriteLine(myDictionary["公司2"]);
            Console.ReadKey();

        }
时间: 2024-08-06 14:43:41

泛型之Dictionary的相关文章

C#泛型集合—Dictionary&lt;K,V&gt;使用技巧

[csharp] view plaincopy 1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) 2.描述  1).从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成  2).任何键都必须是唯一的  3).键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值  4).Key和Value可以是任何类型(string,int,custom c

C#入门Dictionary&lt;k,v&gt;泛型集合

关于Dictionary<k,v>泛型集合 Dictionary<k,v>通常成为字典,<k,v>约束集合中元素类型: 编译时检查类型约束,无需装箱拆箱操作,与哈希表操作类似: 1 static void Main(string[] args) 2 { 3 //创建几个学员对象 4 Student objStudent1 = new Student(1001, "小明"); 5 Student objStudent2 = new Student(10

泛型初了解

List<T>泛型只是泛型中的一种,很多地方都可以用到泛型,dictionary.list.反射.委托-- 泛型 程序设计语言的一种特性,使得程序员在强类型程序设计语言中可以定义一些可变的部分,这些可变的部分在使用前必须做出指明,泛型实际是具有占位符的类.结构.接口.和方法. 占位符:先占住一个固定的位置,等着你再往里面添加内容的符号 强类型语言:不同类型之间有严格的定义,只有相同的变量才能操作. 弱类型语言:没有明显的类型区别,各个类型之间可以自动的转换. 在三层中师父就要求不可以将D层的传

Dictionary读取键值的快捷方法

对泛型集合Dictionary<T,T> 进行读取键值是经常的操作,一般情况下,都是通过keys 和values进行键值的读取操作: eg: foreach (var item in dic.Keys)            {                Console.WriteLine(item);            } foreach (var item in dic.Values)            {                Console.WriteLine(it

Hashtable和Dictionary&lt;T,K&gt;的使用

由于Hashtable内部自带有排序(根据Key的HashCode来进行的),因此有时在使用Hashtable时就会造成数据顺序不可控的情况,有两种办法可以解决, 测试代码: Dictionary<string,string> ht=new Dictionary<string, string>();        ht.Add("http://www.sina.com.cn","");        ht.Add("http://w

Java泛型读书笔记 (三)

泛型对于老代码的支持 Java的泛型设计成类型擦除的目的,很大一部分是为了兼容老老代码.如下的一段代码: void setLabelTable(Dictionary table) table的类型是非泛型的Dictionary,但是我们可以传入泛型的Dictionary: Dictionary<Integer, Component> labelTable = new Hashtable<>(); labelTable.put(0, new JLabel(new ImageIcon(

C#中的泛型和泛型集合

泛型 泛型引入了一个概念:类型参数.通过使用类型参数(T)减少了运行时强制转换或装箱操作的风险,通过泛型可以最大限度的重用代码,保护类型的安全及提高性能,他的最常见应用就是创建集合类,可以约束集合类中的元素类型.比较典型的泛型集合是List<T>和Dictionary<>; 泛型集合List<T> 语法 List<T>对象名=new List<T>(); List<T>与ArrayList的区别 异同点                

C# in Depth Third Edition 学习笔记-- C#2.0: 解决C#1.0的问题 1 泛型

用泛型实现参数化类型 1. 泛型更好滴编译时检查,能消除很多装箱和拆箱 2. 泛型字典 Dictionary<TKey, TValue> 1 static Dictionary<string,int> CountWords(string text) 2 { 3 Dictionary<string,int> frequencies; 4 frequencies = new Dictionary<string,int>(); 5 6 string[] words

c#泛型使用详解:泛型特点、泛型继承、泛型接口、泛型委托

泛型:通过参数化类型来实现在同一份代码上操作多种数据类型.利用"参数化类型"将类型抽象化,从而实现灵活的复用.在.NET类库中处处都可以看到泛型的身影,尤其是数组和集合中,泛型的存在也大大提高了程序员的开发效率.更重要的是,C#的泛型比C++的模板使用更加安全,并且通过避免装箱和拆箱操作来达到性能提升的目的.因此,我们很有必要掌握并善用这个强大的语言特性. C#泛型特点: 1.如果实例化泛型类型的参数相同,那么JIT编辑器会重复使用该类型,因此C#的动态泛型能力避免了C++静态模板可能