当前位置: 首页 > news >正文

淄博周村网站建设公司百度seo和sem的区别

淄博周村网站建设公司,百度seo和sem的区别,wordpress实现说说,如何设置网站图标一、哈希表#xff08;Hash Table#xff09;简介#xff1a; 哈希表是一种数据结构#xff0c;用于实现字典或映射等抽象数据类型。它通过把关键字映射到表中的一个位置来实现快速的数据检索。哈希表的基本思想是利用哈希函数将关键字映射到数组的索引位置上#xff0c;…一、哈希表Hash Table简介 哈希表是一种数据结构用于实现字典或映射等抽象数据类型。它通过把关键字映射到表中的一个位置来实现快速的数据检索。哈希表的基本思想是利用哈希函数将关键字映射到数组的索引位置上从而实现常数时间的查找、插入和删除操作。 二、哈希表的基本组成部分 哈希函数Hash Function 哈希函数负责将关键字映射到哈希表的索引位置。一个好的哈希函数应该能够将关键字均匀地分布到哈希表的各个位置上减少冲突的概率。数组Array 哈希表的主要存储结构是一个数组通过哈希函数计算的索引将关键字映射到数组的位置上。冲突处理Collision Resolution 冲突是指两个不同的关键字被哈希函数映射到了相同的位置上。常见的冲突处理方法包括链地址法和开放地址法。链地址法Separate Chaining 每个哈希表的位置上维护一个链表冲突的关键字被放入相应位置的链表中。如上图所示是一个链地址法实现的哈希表。开放地址法Open Addressing如果发生冲突就尝试寻找下一个可用的位置。有多种开放地址法的实现方式如线性探测、二次探测等。 三、Java 中的 HashMap 在 Java 中HashMap 是基于哈希表实现的键值对存储的数据结构。以下是 HashMap 的一些重要特性和实现细节 数据结构 HashMap 使用数组存储键值对每个数组元素称为桶bucket。每个桶可以存储多个键值对。哈希函数 HashMap 使用键的哈希码来确定桶的位置。Java 中的 hashCode() 方法用于获取对象的哈希码。冲突处理 当多个键的哈希码映射到相同的桶上时HashMap 使用链地址法或者红黑树来解决冲突即在桶中维护一个链表。负载因子和扩容 HashMap 有一个负载因子load factor的概念当桶中的键值对数量达到负载因子与桶的容量的乘积时触发扩容操作。默认负载因子为 0.75。负载因子的值增大冲突率也随着增大我们不能直接控制冲突率可以通过影响负载因子来降低冲率而控制负载因子负载因子是哈希表的元素数量除哈希桶数量我们认为哈希表要传入的数量是未知的也可以看作无穷的所以通过不能降低减少哈希表元素的数量来降低负载因子的值但我们可以通过增加哈希桶的值来降低负载因子的值进而降低冲突率。迭代顺序 HashMap 的迭代顺序不是固定的不同版本的 JDK 可能有不同的实现。在 Java 8 之前HashMap 的迭代顺序是不确定的。在 Java 8 及以后为了提高性能引入了红黑树RB-tree来优化链表影响了迭代顺序。线程安全 HashMap 不是线程安全的如果多个线程同时操作 HashMap可能会导致并发问题。可以考虑使用 Collections.synchronizedMap() 或者 ConcurrentHashMap 来实现线程安全。参考【数据类型】ConcurrentHashMap分段锁实现高并发 和【数据类型】Collections.synchronizedMap 多线程Map // 示例代码 import java.util.HashMap; import java.util.Map;public class HashMapExample {public static void main(String[] args) {// 创建 HashMap 实例MapString, Integer hashMap new HashMap();// 添加键值对hashMap.put(Alice, 25);hashMap.put(Bob, 30);hashMap.put(Charlie, 22);// 获取值int age hashMap.get(Bob);System.out.println(Bobs age: age);// 遍历 HashMapfor (Map.EntryString, Integer entry : hashMap.entrySet()) {System.out.println(entry.getKey() : entry.getValue());}} }上述代码展示了使用 HashMap 存储和访问键值对的基本操作。 四、java中的HashTable HashTable也是利用哈希表算法原理Hashtable底层也采用数组链表的数据结构进行实现当哈希冲突发生时使用链表来解决冲突。与HashMap不同的是Hashtable在JDK 8及以前没有使用红黑树解决哈希冲突这导致了其效率相对较低。还有以下几处不同 1、同步性 HashTable 是线程安全的所有的方法都是同步的即在单个方法调用时HashTable 会对其进行锁定以确保线程安全。这使得在并发环境下HashTable 是安全的但在性能上可能会受到影响。HashMap 不是线程安全的。在多线程环境下如果没有外部同步措施对 HashMap 进行并发修改可能导致不确定的结果。 2、空值处理 HashTable 不允许键或值为 null如果试图存储 null 键或值会抛出 NullPointerException。HashMap 允许键和值为 null。 3、继承关系 Hashtable 继承自Dictionary类Dictionary类是一个已经被废弃的类见其源码中的注释。父类都被废弃自然而然也没人用它的子类Hashtable了。HashMap 继承自AbstractMap类是 Java Collections Framework 中的一部分。但二者都实现了Map接口。 4、性能 由于 HashTable 在所有方法上使用同步它在性能上可能会受到影响尤其在多线程环境下。HashMap 不使用同步因此在单线程环境或者不需要线程安全保证的场景下性能可能更好。 在新的 Java 5 版本中推荐使用 HashMap 或者 ConcurrentHashMap 而不是 HashTable因为它们提供了更好的性能和更灵活的使用方式。 5、包含的contains方法不同 hashtable则保留了 contains 方法效果同 containsValue ,还包括 containsValue 和 containsKey 方法。HashMap是没有 contains 方法的而包括 containsValue 和 containsKey 方法. 6、应用场景 根据上述的区别和特点我们可以得出以下建议 如果线程安全的Map集合并且不需要存储null键或null值可以选择Hashtable如果需要高效、非线程安全的Map集合并且需要存储null键或null值可以选择HashMap如果需要高效、线程安全的Map集合可以选择使用ConcurrentHashMap也允许键、值为null。 知识是一个环来我的博客绕圈吧~ 持续更新中后续更精彩
http://www.zqtcl.cn/news/550797/

相关文章:

  • 如何进网站出口外贸是做什么的
  • 网站制作北京网站建设公司哪家好一个人 建设网站
  • 百度网站是什么阿里云免费网站建设
  • 网站建设平台源码攻击网站步骤
  • 注册了网站之后怎么设计深圳开发app
  • 国外网站搭建平台移动互联网公司
  • 做网络私活的网站网站开发的人
  • 数据分析网站开发四川手机网站设计方案
  • 什么是网络营销的方法莱州网站建设关键字排名优化网络托管微信代运营
  • 雅虎网站收录提交入口怎么看网站谁做的
  • 青浦专业做网站免费网站软件大全
  • joomla 网站图标六安市城市建设档案馆网站
  • 郑州 公司网站制作win10 wordpress安装
  • html5网站有哪些网站建设部分费用会计科目
  • 网站域名备案 更改吗深圳新站优化
  • 房产网站门户系统免费网站免费无遮挡
  • 用国外网站 图片做自媒体seo诊断a5
  • 广州市南沙建设局网站优改网logo设计
  • 网站建设亿玛酷知名公司网站首页如何做
  • 教育网站 php网络服务公司
  • net域名做网站怎么样建站公司 转型经验
  • 赣州网站建设哪家公司好上海市建设安全协会网站
  • 网站排名优化软件有哪些西宁网站建设官网
  • 支付宝手机网站签约迪庆公司网站开发方法
  • 唐山网站关键词优化网站开发公司推荐
  • 福建响应式网站制作市工商局网站建设情况
  • 深圳网站运营托管罗伯特清崎说的网络营销是什么
  • 太仓市质监站网址百度关键字推广费用
  • 为您打造高端品牌网站pageadmin wordpress
  • 中小型网站建设的基本流程简约网站欣赏