Loading...
墨滴

莫激

2021/12/16  阅读:51  主题:默认主题

Dictionary

Dictionary

Dictionary的本质

  • 可以将Dictionary理解为 拥有泛型的Hashtable
  • 他也是基于键的哈希代码组织起来的 键/值对
  • 键值对类型从Hashtable的Object变为了可以自己指定的泛型

申明

  • Dictionary<Key,Value>dictionary = new Dictionary<Key,Value>();
  • 需要引用命名空间 using System.Collections.Generic
Dictionary<int,string> dictionary = new Dictionary<int,string>();

增删查改

  • dictionary.Add(Key,Value);,因为前年申明时候,指定Key的类型是int,Value的类型是字符串,!!!注意不能出现相同键

    dictionary.Add(1,"11234"); //在键为1上存储“11234”的值
    dictionary.Add(2,"43252"); //在键为2上存储“43252”的值

  • 通过键去删除,dictionary.Remove(Key);
  • 清空。dictionary.Clear();

  • 通过键查找元素,找不到会报错(这里就跟哈希表不用,哈希表找不到会返回空)

    dictionary[0],这里输入的是键名

  • 查看是否存在,根据键检测

    dictionary.ContainsKey(4);//查找是否存在键为4的键值对
  • 查看是否存在,根据值检测

    dictionary.ContainsValue("1234");//查看是否存在值为1234的键值对

  • dictionary[0] = "555";

遍历

遍历所有键

foreach(int item in dictionary.Keys)
{
    Console.WriteLine(item);//输出所有键
    Console.WriteLine(dictionary[item]);//输出所有相应键的值
}

遍历所有值

foreach(string item in dictionary.Values)
{
    Console.WriteLine(item);
}

键值对一起遍历

foreach(KeyValuePair<int,string> item in dictionary)
{
    Console.WriteLine("键:"+item.Key+"值:"+item.Value);
}

练习

  • 使用字典存储0~9的数字对应的大写文字

    提示用户输入一个不超过三位的数,提供一个方法,返回数的大写

    例如:306,返回三零六

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

namespace _003_Dictionary
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<charchar> dictionary = new Dictionary<charchar>();
            string str = "0零 1一 2二 3三 4四 5伍 6六 7七 8八 9九";
            //分割字符串,结果是arr[0]=0零,arr[1]=1一,等等
            string[] arr = str.Split(new string[]{" "},StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < arr.Length; i++)
            {
                //arr[0][0]指取值为0零的数的第一位,就是0
                //arr[0][1]指取值为0零的数的第二位,就是零
                dictionary.Add(arr[i][0], arr[i][1]);
            }

            Console.WriteLine("请输入一串数字,将它转换为中文");
            //输入306
            string StrNum = Console.ReadLine();
            for (int i = 0; i < StrNum.Length; i++)
            {
                //StrNum[0]=3,StrNum[1]=0,StrNum[2]=6
                if (dictionary.ContainsKey(StrNum[i]))
                {
                    Console.Write(dictionary[StrNum[i]]);
                }
                else
                {
                    Console.Write(StrNum[i]);
                }
            }
        }
    }
  • 计算每个字母出现的次数“Welcome to Unity World”,使用字典存储,最后遍历整个字典,不区分大小写
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dictionary2
{
    class Program
    {
        static void Main(string[] args)
        {

            string str = "Welcome to Unity World";
            
            Dictionary<charint> dic = new Dictionary<charint>();
            foreach (var item in str)
            {
                if (dic.ContainsKey(item))
                {
                    int n = dic[item]+1;
                    dic[item] = n;
                }
                else
                {
                    //dic.Add(item,1);
                    dic[item] = 1;
                }
            }
            foreach (KeyValuePair<char,int> kv in dic)
            {
                if (kv.Key!=' ')
                {
                    Console.WriteLine("{0}出现次数是{1}", kv.Key, kv.Value);
                }  
            }
        }
    }
}

莫激

2021/12/16  阅读:51  主题:默认主题

作者介绍

莫激