添加Lesson4
This commit is contained in:
@@ -17,6 +17,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson3_Queue", "Lesson3_Qu
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson3_Queue练习题", "Lesson3_Queue练习题\Lesson3_Queue练习题.csproj", "{77AE0EA5-FD54-46A0-A708-A2B38ABEE26D}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson3_Queue练习题", "Lesson3_Queue练习题\Lesson3_Queue练习题.csproj", "{77AE0EA5-FD54-46A0-A708-A2B38ABEE26D}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson4_Hashtable", "Lesson4_Hashtable\Lesson4_Hashtable.csproj", "{C703B2F8-529B-46E0-8D8E-07750A812966}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson4_Hashtable练习题", "Lesson4_Hashtable练习题\Lesson4_Hashtable练习题.csproj", "{962C9536-7CD7-4F5A-9D1E-1DCF986953D4}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -51,6 +55,14 @@ Global
|
|||||||
{77AE0EA5-FD54-46A0-A708-A2B38ABEE26D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{77AE0EA5-FD54-46A0-A708-A2B38ABEE26D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{77AE0EA5-FD54-46A0-A708-A2B38ABEE26D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{77AE0EA5-FD54-46A0-A708-A2B38ABEE26D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{77AE0EA5-FD54-46A0-A708-A2B38ABEE26D}.Release|Any CPU.Build.0 = Release|Any CPU
|
{77AE0EA5-FD54-46A0-A708-A2B38ABEE26D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C703B2F8-529B-46E0-8D8E-07750A812966}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{C703B2F8-529B-46E0-8D8E-07750A812966}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{C703B2F8-529B-46E0-8D8E-07750A812966}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{C703B2F8-529B-46E0-8D8E-07750A812966}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{962C9536-7CD7-4F5A-9D1E-1DCF986953D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{962C9536-7CD7-4F5A-9D1E-1DCF986953D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{962C9536-7CD7-4F5A-9D1E-1DCF986953D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{962C9536-7CD7-4F5A-9D1E-1DCF986953D4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
namespace Lesson4_Hashtable
|
||||||
|
{
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
#region 知识点一 Hashtable的本质
|
||||||
|
//Hashtable(又称散列表)是基于键的哈希代码组织起来的键/值对的集合。
|
||||||
|
//它的主要作用是提高数据查询的效率
|
||||||
|
//使用键来快速查找对应的值,而不需要遍历整个集合。
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 知识点二 声明
|
||||||
|
//需要引用system.collections命名空间
|
||||||
|
Hashtable hashtable = new Hashtable();
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 知识点三 增删查改
|
||||||
|
//只能通过键来操作值
|
||||||
|
|
||||||
|
//增
|
||||||
|
hashtable.Add("001", "张三");
|
||||||
|
// ↑键 ↑值
|
||||||
|
hashtable.Add("002", "李四");
|
||||||
|
hashtable.Add(true, false);
|
||||||
|
hashtable.Add(false, false);
|
||||||
|
//注意:不能出现相同的键
|
||||||
|
|
||||||
|
|
||||||
|
//删
|
||||||
|
//1.只能通过键来删除
|
||||||
|
hashtable.Remove("001");
|
||||||
|
//2.删除不存在的键不会报错也不会有任何反应
|
||||||
|
hashtable.Remove("003");
|
||||||
|
//3.清空
|
||||||
|
hashtable.Clear();
|
||||||
|
hashtable.Add(1, "张三");
|
||||||
|
hashtable.Add(2, "李四");
|
||||||
|
hashtable.Add(3, false);
|
||||||
|
hashtable.Add(true, false);
|
||||||
|
|
||||||
|
|
||||||
|
//查
|
||||||
|
//1.通过键来查找值,找不到返回null
|
||||||
|
Console.WriteLine(hashtable[1]);//找键值为1的值
|
||||||
|
Console.WriteLine(hashtable[4]);//不存在,返回null
|
||||||
|
Console.WriteLine(hashtable[true]);//找键值为true的值
|
||||||
|
//2.查看是否存在
|
||||||
|
//根据键检测
|
||||||
|
if(hashtable.ContainsKey(2))
|
||||||
|
{
|
||||||
|
Console.WriteLine("存在键为2的元素");
|
||||||
|
}
|
||||||
|
if(hashtable.ContainsKey(4))
|
||||||
|
{
|
||||||
|
Console.WriteLine("存在键为4的元素");
|
||||||
|
}
|
||||||
|
//根据值检测
|
||||||
|
if(hashtable.ContainsValue("李四"))
|
||||||
|
{
|
||||||
|
Console.WriteLine("存在值为李四的元素");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//改
|
||||||
|
hashtable[1] = "王五";//修改键为1的值
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 知识点四 遍历
|
||||||
|
//1.对数
|
||||||
|
Console.WriteLine(hashtable.Count);
|
||||||
|
|
||||||
|
//2.遍历所有键
|
||||||
|
foreach (object item in hashtable.Keys)
|
||||||
|
{
|
||||||
|
Console.WriteLine("键"+item);
|
||||||
|
Console.WriteLine("值"+hashtable[item]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//3.遍历所有值
|
||||||
|
foreach (object item in hashtable.Values)
|
||||||
|
{
|
||||||
|
Console.WriteLine("值"+item);
|
||||||
|
}
|
||||||
|
|
||||||
|
//3.键值对一起遍历
|
||||||
|
foreach (DictionaryEntry item in hashtable)
|
||||||
|
{
|
||||||
|
Console.WriteLine("键值"+item.Key+item.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
//4.迭代器遍历法
|
||||||
|
IDictionaryEnumerator myEnumerator = hashtable.GetEnumerator();
|
||||||
|
bool flag = myEnumerator.MoveNext();
|
||||||
|
while (flag)
|
||||||
|
{
|
||||||
|
Console.WriteLine("键值" + myEnumerator.Key + myEnumerator.Value);
|
||||||
|
flag = myEnumerator.MoveNext();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 知识点五 装箱拆箱
|
||||||
|
//一样的
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
|
using System.Threading;
|
||||||
|
namespace Lesson4_Hashtable练习题
|
||||||
|
{
|
||||||
|
//因为一般管理器都是唯一的,所以做成单例模式的对象
|
||||||
|
class MonsterMgr
|
||||||
|
{
|
||||||
|
private static MonsterMgr instance = new MonsterMgr();
|
||||||
|
private Hashtable monstersTable = new Hashtable();
|
||||||
|
private MonsterMgr()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public static MonsterMgr Instance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int monsterID = 0;
|
||||||
|
|
||||||
|
public void AddMonster()
|
||||||
|
{
|
||||||
|
|
||||||
|
Monster monster = new Monster(monsterID);
|
||||||
|
Console.WriteLine("创建了怪物"+monsterID);
|
||||||
|
monsterID++;
|
||||||
|
monstersTable.Add(monster.id, monster);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteMonster(int monsterID)
|
||||||
|
{
|
||||||
|
if (monstersTable.ContainsKey(monsterID))
|
||||||
|
{
|
||||||
|
(monstersTable[monsterID] as Monster).Dead();
|
||||||
|
monstersTable.Remove(monsterID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class Monster
|
||||||
|
{
|
||||||
|
public int id;
|
||||||
|
public Monster(int id)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
public void Dead()
|
||||||
|
{
|
||||||
|
Console.WriteLine("怪物"+id+"死亡");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class Program
|
||||||
|
{
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
MonsterMgr.Instance.AddMonster();
|
||||||
|
MonsterMgr.Instance.AddMonster();
|
||||||
|
MonsterMgr.Instance.AddMonster();
|
||||||
|
MonsterMgr.Instance.AddMonster();
|
||||||
|
MonsterMgr.Instance.AddMonster();
|
||||||
|
MonsterMgr.Instance.DeleteMonster(0);
|
||||||
|
MonsterMgr.Instance.DeleteMonster(3);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user