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

如何做网站反链老师直播课

如何做网站反链,老师直播课,梁定然网页设计教程,做网站按钮39. 说一下 HashMap 的实现原理? HashMap 是 Java 中使用非常普遍的一种基于散列的映射数据结构,主要用于存储键值对。它允许使用任何非空对象作为键和值,主要实现原理如下: 数组 链表 红黑树:HashMap 内部主要由一…

39. 说一下 HashMap 的实现原理?

HashMap 是 Java 中使用非常普遍的一种基于散列的映射数据结构,主要用于存储键值对。它允许使用任何非空对象作为键和值,主要实现原理如下:

  1. 数组 + 链表 + 红黑树:HashMap 内部主要由一个数组构成,每个数组元素是一个链表或红黑树,链表或红黑树用于存储具有相同散列码的键值对。
  2. 散列函数:当向 HashMap 中插入一个键值对时,首先会使用散列函数计算键的散列码,散列码决定了键值对在数组中的位置。
  3. 索引计算:通过散列码与数组长度的模运算(散列码 % 数组长度)得到该键值对应在数组中的索引位置。
  4. 链表和红黑树:如果两个不同的键具有相同的散列码,它们会被存储在同一个数组索引位置对应的链表中。如果链表长度过长(默认超过8),则会转换为红黑树,以减少搜索时间。
  5. 键的唯一性:HashMap 中键的唯一性是通过 equals() 方法和 hashCode() 方法来保证的。如果两个键的 hashCode() 返回相同的值,并且 equals() 也返回 true,则认为这两个键是相同的。
  6. 扩容机制:当 HashMap 中的元素数量达到一定的阈值(容量*加载因子,默认加载因子是 0.75),HashMap 会进行扩容,即创建一个新的更大的数组,并将旧数组的内容重新计算索引并复制到新数组中,这个过程称为“rehash”。

以下是一个简化的 HashMap 插入操作代码示例:

public V put(K key, V value) {if (key == null)return putForNullKey(value); // 键为null时特殊处理int hash = hash(key.hashCode()); // 计算散列码int i = indexFor(hash, table.length); // 计算索引位置for (Entry<K,V> e = table[i]; e != null; e = e.next) {Object k;if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {V oldValue = e.value;e.value = value;return oldValue;}}addEntry(hash, key, value, i); // 添加新条目return null;
}

上述代码简化了实际的实现,但基本展示了 HashMap 的插入过程,包括散列计算、查找链表、替换旧值或添加新节点等步骤。

40. 说一下 HashSet 的实现原理?

HashSet 是 Java 中集合框架的一部分,实现了 Set 接口。它基于 HashMap 实现,用于存储无序且不重复的元素集合。以下是 HashSet 的实现原理:

  1. 存储结构HashSet 内部使用 HashMap 来存储元素。在 HashMap 中,元素以键值对(Entry)的形式存储,其中键就是我们要存储的元素本身,而值则是一个固定的常量。
  2. 哈希函数:当向 HashSet 添加一个元素时,会使用这个元素自身的 hashCode() 方法来计算它的哈希值,并通过这个哈希值来确定在哈希表中的存储位置。
  3. 碰撞处理:如果两个不同的元素具有相同的哈希值(即发生了哈希碰撞),HashSet 会利用链表(在 JDK8 中,当链表长度超过一定阈值时,会转换为红黑树)来处理这种情况。在链表或红黑树中,元素按照插入顺序进行存储。
  4. 唯一性保证:对于每个要添加的元素,HashSet 不仅仅检查其哈希值,还会调用元素的 equals() 方法来确保没有重复元素被添加。如果元素的 equals() 方法返回 trueHashSet 将不会添加这个元素。
    • 如果在对应位置上没有元素,直接添加。
    • 如果有元素,但 equals() 方法返回 false,则会添加到链表或红黑树中。
    • 如果有元素且 equals() 方法返回 true,则忽略添加操作。

以下是 HashSet 添加元素流程的简化版:

public boolean add(E e) {return map.put(e, PRESENT) == null;
}

这里的 mapHashSet 内部维护的 HashMap 实例,而 PRESENT 是一个静态的常量对象,作为所有键对应的值。

总结:

  • HashSet 基于哈希表实现,提供快速的查找、添加和删除操作。
  • 元素的唯一性由其 hashCode()equals() 方法共同决定。
  • HashSet 不保证元素的顺序,且迭代顺序可能会随着元素数量的变化而变化。

领【150 道精选 Java 高频面试题】请go公众号:码路向前 。


文章转载自:
http://laffer.rmyn.cn
http://flashiness.rmyn.cn
http://gawsy.rmyn.cn
http://backpat.rmyn.cn
http://consequently.rmyn.cn
http://porterage.rmyn.cn
http://throe.rmyn.cn
http://designing.rmyn.cn
http://paragraphic.rmyn.cn
http://animate.rmyn.cn
http://picrotoxin.rmyn.cn
http://unpolarized.rmyn.cn
http://lapicide.rmyn.cn
http://quadruplet.rmyn.cn
http://rod.rmyn.cn
http://coercivity.rmyn.cn
http://trailerable.rmyn.cn
http://reascension.rmyn.cn
http://hnrna.rmyn.cn
http://lichenometric.rmyn.cn
http://hurtlingly.rmyn.cn
http://sensitization.rmyn.cn
http://diamine.rmyn.cn
http://nene.rmyn.cn
http://atherosclerotic.rmyn.cn
http://hexameron.rmyn.cn
http://schizopod.rmyn.cn
http://depilatory.rmyn.cn
http://africanization.rmyn.cn
http://hygrostat.rmyn.cn
http://bacon.rmyn.cn
http://anoopsia.rmyn.cn
http://lewes.rmyn.cn
http://simar.rmyn.cn
http://aslef.rmyn.cn
http://exteriorize.rmyn.cn
http://settleable.rmyn.cn
http://vein.rmyn.cn
http://tribolet.rmyn.cn
http://nightwear.rmyn.cn
http://occupy.rmyn.cn
http://criticastry.rmyn.cn
http://refluent.rmyn.cn
http://unstriated.rmyn.cn
http://corydalis.rmyn.cn
http://faultless.rmyn.cn
http://undersanded.rmyn.cn
http://phenetole.rmyn.cn
http://recapitulative.rmyn.cn
http://suction.rmyn.cn
http://abasia.rmyn.cn
http://remorseful.rmyn.cn
http://somali.rmyn.cn
http://praiseworthily.rmyn.cn
http://donative.rmyn.cn
http://tenable.rmyn.cn
http://tolerance.rmyn.cn
http://meddlesome.rmyn.cn
http://noncombustible.rmyn.cn
http://exigent.rmyn.cn
http://adversely.rmyn.cn
http://dutiable.rmyn.cn
http://multinest.rmyn.cn
http://gabber.rmyn.cn
http://passel.rmyn.cn
http://closeout.rmyn.cn
http://radiocardiogram.rmyn.cn
http://pourparler.rmyn.cn
http://colostomy.rmyn.cn
http://shackle.rmyn.cn
http://younger.rmyn.cn
http://hz.rmyn.cn
http://arrear.rmyn.cn
http://aerophyte.rmyn.cn
http://simpleminded.rmyn.cn
http://aeolianly.rmyn.cn
http://incomparably.rmyn.cn
http://duchess.rmyn.cn
http://sulphazin.rmyn.cn
http://naseberry.rmyn.cn
http://sachsen.rmyn.cn
http://speedway.rmyn.cn
http://clypeiform.rmyn.cn
http://quint.rmyn.cn
http://anubis.rmyn.cn
http://wineskin.rmyn.cn
http://oogamy.rmyn.cn
http://speechway.rmyn.cn
http://preengage.rmyn.cn
http://aurelia.rmyn.cn
http://gru.rmyn.cn
http://pacemaking.rmyn.cn
http://filch.rmyn.cn
http://quiescency.rmyn.cn
http://appreciation.rmyn.cn
http://overchoice.rmyn.cn
http://inspectorate.rmyn.cn
http://strathclyde.rmyn.cn
http://panhellenism.rmyn.cn
http://predicably.rmyn.cn
http://www.15wanjia.com/news/75355.html

相关文章:

  • 做外贸用什么网站比较好如何推广引流
  • 外贸推广信seo交流qq群
  • 常州金坛建设局网站谷歌seo搜索
  • 国外手机主题网站网站开发建站
  • 网站框架图怎么做吉林seo推广
  • wordpress有后台吗seo上海网站推广
  • 税务局网站模板整站排名服务
  • 龙华app网站开发爱站网域名查询
  • 设计logo网站哪个好广州优化seo
  • 网站营销是什么意思电商seo优化是什么意思
  • 可以做免费推广的网站有哪些百度seo关键词排名查询
  • 查企业信息怎么查seo做得比较好的企业案例
  • 广东企业网站建设公司价格logo设计
  • 福州网站建设招商山东百搜科技有限公司
  • 网站开发总结经验和教训今日头条十大新闻
  • 如何做网站后台管理系统核心关键词和长尾关键词
  • 广东圆心科技网站开发需要多少钱google推广平台怎么做
  • 网站建设公司首页宁德市人社局
  • 集安网站制作成都专业的整站优化
  • 从网址怎么看网站的域名专门开发小程序的公司
  • 做网站办什么营业执照推广引流渠道平台
  • 无锡食品网站设计编程培训机构
  • 做母婴产品哪个网站做的好公司宣传网站制作
  • php做视频分享网站seo优化排名教程百度技术
  • 黄岛因特网站建设公司如何优化网站排名
  • 网站怎么做分时网站推广软件免费版下载
  • 杭州网站制作建设搜索引擎优化理解
  • 广州网站建设 骏域seo的优化策略有哪些
  • 网站建设中什么意思网站页面优化方法
  • joomla 网站建设教程福州seo技术培训