IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 字典(Dictionary)和哈希表(Hashtable) -> 正文阅读

[数据结构与算法]字典(Dictionary)和哈希表(Hashtable)

字典(Dictionary)和哈希表(Hashtable)的使用与区别

字典:

1.字典是一种典型的键值对类型的数据结构,每一个元素都是由一个键值对(键key和值value)组成。
2.这种数据结构可以通过某个键来访问元素,所以字典也被称为映射或散列表。
3.字典的主要特性是根据键快速查找值,也可以自由添加和删除元素,这有点像List,但跟List不同的是,List是连续存储,直接定址的。 字典像链表,非连续存储,所以删除元素不需要移动后续元素,就没有在内存中移动后续元素的性能开销。
4.通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary 类是作为一个哈希表来实现的,Dictionary 没有顺序之分,这一点不同于list列表,有顺序之分。
键必须是唯一的,而值不需要唯一。
5.字典中的键和值都是object类型,所以可以是任何类型(比如:string、int、自定义类型等等)

//创建字典
Dictionary<string,int> dict = new Dictionary<string,int>();
//添加元素
dict.Add();
//删除元素
dict.Remove();
//删除字典所有元素
dict.Clear();
//循环遍历字典
foreach(var item in dict)
{
    Debug.Log(item.Key+item.Value);
//if判断字典是否存在要找的内存
   if(item.Key=="")
   {
        Debug.Log("存在");
   }
}

//ContainsKey判断是否存在Key,返回一个Bool类型
if(dict.ContainsKey(""))
{
    Debug.Log("存在");
}

//ContainsValue判断是否存在Value,返回一个Bool类型
if(dict.ContainsValue()))
{
    Debug.Log("存在");
}

//TryGetValue判断Key值是否在字典中,返回一个Bool值给a(0或1)
int a;
dict.TryGetValue("",a);
Debug.Log(a);

哈希表:

1.哈希表Hashtable类实现了IDictionary接口,集合中的值也是以键值对(key/value)的形式存取的。
2.哈希表,也称为散列表,在该集合中每一个元素都是由键值对(key/value)的形式存放值。
3.需要注意的是,key是区分大小写的。
4.哈希表Hashtable中的键和值为object类型,所以哈希表Hashtable支持任何类型的键值对。

using System.Collections.Generic;//使用哈希表时,必须要引用这个命名空间
//创建哈希表(使用方式和字典基本相同)
Hashtable hstable = new Hashtable();
//添加数据
hstable.Add(1,"2");
hstable.Add("a",true);
//删除数据
hstable.Remove("a");
bool t - hstable.ContainsKey("a");//判断是否存在key值(返回bool类型)
bool i = hstable.ContainsValue(true);//判断是否存在Value值(返回bool类型)
//遍历哈希表
foreach(DictionaryEntry item in hstable)
{
    Debug.Log(item.key+" "+ item.Value);
}

字典与哈希表的区别:

1、多线程区别
单线程用字典,有泛型优势,读取速度快,容量利用更充分;
哈希表单线程写入,多线程读取
2、线程安全
字典非线程安全,必须人为的增加lock语句进行保护,影响效率。
哈希表可以调用Synchronized()方法可以获得完全线程安全的类型。
3、数据插入顺序
字典的排序就是按照插入的排序(注:删除节点后顺序就被打乱了),因此在需要体现顺序的情况下,字典更有效。
哈希表不是按照顺序插入数据的。
4、索引效率
字典在单线程索引数据的时候效率比较高,读取速度快,但是数据量大的时候效率会下降
哈希表的索引方式是经过散列处理的,在数据量大的时候处理效率更高,所以哈希表比较适合运用在做对象缓存,树递归算法的替代等各种需要提升效率的场合。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:59:49  更:2022-10-17 13:02:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:52:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码