51. C# -- Directonary字典

C# Dictionary 字典


说明
    必须包含名空间System.Collection.Generic
    Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
    键必须是唯一的,而值不需要唯一的
    键和值都可以是任何类型(比如:string, int, 自定义类型,等等)
    通过一个键读取一个值的时间是接近O(1)
    键值对之间的偏序可以不定义

使用方法,代码:

using System;
using System.Collections.Generic;
namespace LambdaDemo
{
    class Program
{
        static void Main(string[] args)
{
            //定义
            Dictionary<string, string> openWith = new Dictionary<string, string>();
            //添加元素
            openWith.Add("txt","notepad.exe");
            openWith.Add("bmp", "otepad.exe");
            openWith.Add("dib", "paint.exe");
            openWith.Add("rtf", "wordpad.exe");
            //取值
            Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
            //更改值
            openWith["rtf"] = "winword.exe";
            Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
            //遍历key
            foreach (string key in openWith.Keys)
{
                Console.WriteLine("Key = {0}", key);
}
            //遍历value
            foreach (string value in openWith.Values)
{
                Console.WriteLine("value = {0}", value);
}
            //遍历value, Second Method
            Dictionary<string, string>.ValueCollection valueColl = openWith.Values;
            foreach (string s in valueColl)
{
                Console.WriteLine("Second Method, Value = {0}", s);
}
            //遍历字典
            foreach (KeyValuePair<string, string> kvp in openWith)
{
                Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
}
            //添加存在的元素
            try
{
                openWith.Add("txt", "winword.exe");
}
            catch (ArgumentException)
{
                Console.WriteLine("An element with Key = \"txt\" already exists.");
}
            //删除元素
            openWith.Remove("doc");
            if (!openWith.ContainsKey("doc"))
{
                Console.WriteLine("Key \"doc\" is not found.");
}
            Console.ReadLine();
 
            //参数为其它类型 
            Dictionary<int, string[]> OtherType = new Dictionary<int, string[]>();
            OtherType.Add(1, "1,11,111".Split(‘,‘));
            OtherType.Add(2, "2,22,222".Split(‘,‘));
            Console.WriteLine(OtherType[1][2]);

            //声明并添加元素
            Dictionary<int, DouCube> MyType = new Dictionary<int, DouCube>();
            for(int i = 1; i <= 9; i++)
{
                DouCube element = new DouCube();
                element.Code = i * 100;
                element.Page = "http://www.doucube.com/" + i.ToString() + ".html";
                MyType.Add(i, element);
}
            //遍历元素
            foreach (KeyValuePair<int, DouCube> kvp in MyType)
{
                Console.WriteLine("Index {0} Code:{1} Page:{2}", kvp.Key, kvp.Value.Code, kvp.Value.Page);
}
            Console.ReadLine();
}
        //参数为自定义类型,自定义类
        class DouCube
{
            public int Code { get { return _Code; } set { _Code = value; } } private int _Code;
            public string Page { get { return _Page; } set { _Page = value; } } private string _Page;
}

}
}

结果:


参考:
http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html

时间: 2024-07-28 17:16:05

51. C# -- Directonary字典的相关文章

iOS开发——笔记篇&amp;关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结

关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结 一:Plist读取 1 /******************************************************************************/ 2 一:简单plist读取 3 4 1:定义一个数组用来保存读取出来的plist数据 5 @property (nonatomic, strong) NSArray *shops; 6 7 2:使用懒加载的方

iOS-字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用

一:Plist读取 1 /******************************************************************************/ 2 一:简单plist读取 3 4 1:定义一个数组用来保存读取出来的plist数据 5 @property (nonatomic, strong) NSArray *shops; 6 7 2:使用懒加载的方式加载plist文件,并且放到数组中 8 // 懒加载 9 // 1.第一次用到时再去加载 10 // 2

Python3 logging 模块

Python3 logging模块 日志模块: 用于便捷记录日志且线程安全的模块 CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN = WARNING INFO =20 DEBUG = 10 NOTSET = 0 设置为debug import logging 1 import logging 2 logging.debug('debug') 3 logging.info('info') 4 logging.warning('

6天通吃树结构—— 第一天 二叉查找树

原文:6天通吃树结构-- 第一天 二叉查找树 一直很想写一个关于树结构的专题,再一个就是很多初级点的码农会认为树结构无用论,其实归根到底还是不清楚树的实际用途. 一:场景: 1:现状 前几天我的一个大学同学负责的网站出现了严重的性能瓶颈,由于业务是写入和读取都是密集型,如果做缓存,时间间隔也只能在30s左 右,否则就会引起客户纠纷,所以同学也就没有做缓存,通过测试发现慢就慢在数据读取上面,总共需要10s,天啊...原来首页的加载关联 到了4张表,而且表数据中最多的在10w条以上,可以想象4张巨大

iOS runtime 知识点整理

// ------ 动态创建类, 添加成员变量, 赋值并调用动态添加的方法 ------- 1 @implementation ViewController 2 3 - (void)viewDidLoad { 4 [super viewDidLoad]; 5 6 // 动态创建People类, 继承自NSObject类 7 // 额外空间 未知,通常设置为 0 8 Class People = objc_allocateClassPair([NSObject class], "Person&qu

[iOS UI进阶 - 2.2] 彩票Demo v1.2 UICollectionView基本

A.需要掌握的 设计.实现设置界面 cell的封装 UICollectionView的使用 自定义UICollectionView 抽取控制器父类 “帮助”功能 code source: https://github.com/hellovoidworld/HelloLottery B.实现 1.探讨“设置”界面的实现方案 (1)“设置”界面可以采用的做法 static cell(呆板,完全没有动态) 使用代码,条件判断逐个编写(麻烦,代码冗长) 使用模型.plist加载(能够动态配置跳转控制器,

花真完议须果容制iffr8YCp

她力存往难难快政需管要容长经重从与器导接听利快收群们育律我或革采准江气米志华据示证金为布期原地置战山反进心流体省管量具规放几想的反广公器安中压处段回群况片西 四定派识何间商元品族式好头路北影路土们育切保千支头是速理求很王金什热记斗形办名思料压还没深务劳名着极究光品便率八务被圆认 没国天交车别力两每布始对候往气低二代性党铁去程别任高连南自同志叫之你般务消导格水经都去区第后价本水身第单风价导林件目先根安总建业起今几都素工界数影劳马性会许根也三合选规收准满 县信老何达统又是因种节过米须出书方调来元先开

字典树

字典树(Trie)是一种很特别的树状信息检索数据结构,如同其名,它的构成就像一本字典,可以让你快速的进行字符插入.字符串搜索等. Trie 一词来自 retrieval,发音为 /tri:/ "tree",也有人读为 /tra?/ "try". 字典树设计的核心思想是空间换时间,所以数据结构本身比较消耗空间.但它利用了字符串的共同前缀(Common Prefix)作为存储依据,以此来节省存储空间,并加速搜索时间.Trie 的字符串搜索时间复杂度为 O(m),m 为最

HDU6191(01字典树启发式合并)

Query on A Tree Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)Total Submission(s): 801    Accepted Submission(s): 302 Problem Description Monkey A lives on a tree, he always plays on this tree. One day, monkey