using System;
using System.Collections.Generic;
namespace Lesson8_Dictionary
{
class Program
{
#region pratice-1
public static string pratice_1()
{
Dictionary<int, string> Number_capital = new Dictionary<int, string>();
Console.WriteLine("请输入一个不超过3位数的数字");
Number_capital.Add(1, "壹");
Number_capital.Add(2, "贰");
Number_capital.Add(3, "叁");
Number_capital.Add(4, "肆");
Number_capital.Add(5, "伍");
Number_capital.Add(6, "陆");
Number_capital.Add(7, "柒");
Number_capital.Add(8, "捌");
Number_capital.Add(9, "玖");
Number_capital.Add(0, "零");
int[] num = new int[3];
for (int i = 0; i < 3; ++i)
{
//注意,Read()方法存储为ASCII码,需要减去48
num[i] = Console.Read() - 48;
}
string ans = "";
for (int i = 0; i < 3; ++i)
{
ans += Number_capital[num[i]];
Console.Write(Number_capital[num[i]]);
}
return ans;
}
#endregion
static void Main(string[] args)
{
Console.WriteLine("Dictionary");
#region 知识点一 Dictionary本质
//可以将Dictionary理解为拥有泛型的Hashtable
//它也是基于键的哈希代码组织起来的键/值对
//键值对类型从Hashtable的object变为了可以自己制定的泛型
#endregion
#region 知识点二 声明
//需要引用命名空间
//using System.Collections.Generic
Dictionary<int, string> dic = new Dictionary<int, string>();
#endregion
#region 知识点三 增删查改
#region 增
dic.Add(1, "123");
dic.Add(2, "456");
dic.Add(3, "789");
//dic.Add(3, "789"); error 不能添加相同的键
#endregion
#region 删
//1.只能通过键去删除
//删除不存在的键不做处理
dic.Remove(1);
dic.Remove(4); //Nothing to do
//2.清空
dic.Clear();
dic.Add(1, "123");
dic.Add(2, "456");
dic.Add(3, "789");
#endregion
#region 查
//1.通过键查看值,索引器
//获取或设置与指定的键关联的值。
//public TValue this[TKey key] { get; set; }
Console.WriteLine(dic[1]);
Console.WriteLine(dic[2]);
//Console.WriteLine(dic[4]); error 无法访问不存在的键
//2.查看是否存在
// 确定是否 Dictionary<TKey,TValue> 包含指定键。
//public bool ContainsKey (TKey key);
if (dic.ContainsKey(1))
{
Console.WriteLine("Key 1 is exist");
}
//确定 Dictionary<TKey,TValue> 是否包含特定值。
//public bool ContainsValue (TValue value);
if (dic.ContainsValue("123"))
{
Console.WriteLine("Value 123 is exist");
}
#endregion
#region 改
//直接通过索引器修改
Console.WriteLine(dic[1]);
dic[1] = "111";
Console.WriteLine(dic[1]);
#endregion
#endregion
#region 知识点四 遍历
//获取元素数量
Console.WriteLine(dic.Count);
//1.遍历所有键
foreach (int item in dic.Keys)
{
Console.WriteLine(item + ":" + dic[item]);
}
//2.遍历所有值
foreach (string item in dic.Values)
{
Console.WriteLine(item);
}
//3.键值一起遍历
foreach (KeyValuePair<int, string> item in dic)
{
Console.WriteLine(item.Key + ":" + item.Value);
}
#endregion
#region pratice-1
string numberCapatial = pratice_1();
#endregion
#region pratice-2
string text = "Welcome to unity world!";
Dictionary<char, int> pra2 = new Dictionary<char, int>();
text = text.ToLower();
foreach(char item in text)
{
if (item >= 'a' && item <= 'z')
{
if (pra2.ContainsKey(item))
{
pra2[item]++;
}
else
{
pra2.Add(item, 1);
}
}
}
foreach (KeyValuePair<char, int> item in pra2)
{
Console.WriteLine(item.Key + ":" + item.Value);
}
#endregion
}
}
}