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

上海市建设工程质监站网站网站源码建站

上海市建设工程质监站网站,网站源码建站,苏州建网站的公司,网站建设列表网HashSet原理HashSet原理1.概述2.底层代码3.原理图解4.总结4.1: 1.7原理总结4.2: 1.8原理总结HashSet原理 1.概述 ​ HashSet 实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的 迭代顺序;特别是它不保证…

HashSet原理

  • HashSet原理
    • 1.概述
    • 2.底层代码
    • 3.原理图解
    • 4.总结
      • 4.1: 1.7原理总结
      • 4.2: 1.8原理总结

HashSet原理

1.概述

​ HashSet 实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的 迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。

2.底层代码

​ HashSet 它是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存 所有元素,因此 HashSet 的实现比较简单,相关 HashSet 的操作,基本上都是直接调用底 层 HashMap 的相关方法来完成

public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, java.io.Serializable
{static final long serialVersionUID = -5024744406713321676L;// 底层使用hashmap来保存hashset中所有的元素private transient HashMap<E,Object> map;// Dummy value to associate with an Object in the backing Map// 定义一个虚拟的object对象作为hashmap的value,将次对象定义为static final,放在map的值的位置private static final Object PRESENT = new Object();// 默认无参构造,实际底层初始化一个空的hashmap,并使用默认初始容量为16和加载因子为0.75public HashSet() {map = new HashMap<>();}// 构造一个指定Collection中元素的新set,实际底层使用默认的加载因子为0.75和足以包含指定Collection中	// 左右元素的初始容量来定义一个hashmappublic HashSet(Collection<? extends E> c) {map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));addAll(c);}// 以指定的initialCapacity和loadFactor构造一个空的set,实际底层以相同的参数,构造一个空的map集合// initialCapacity:初始容量,loadFactor:加载因子public HashSet(int initialCapacity, float loadFactor) {map = new HashMap<>(initialCapacity, loadFactor);}// 指定初始长度创建一个空的集合,实际使用一样的参数,与加载因子为0.75构造一个空的mappublic HashSet(int initialCapacity) {map = new HashMap<>(initialCapacity);}// 指定初始长度和加载因子构造一个新的空链接哈希集合// 此构造函数为包含访问权限,不对外公开,实际只是对LinkedHashSet的支持// 实际以指定的参数创建一个空的LinkedHashMap集合HashSet(int initialCapacity, float loadFactor, boolean dummy) {map = new LinkedHashMap<>(initialCapacity, loadFactor);}

3.原理图解

hashset1.7原理

hashset1.8原理

hashset1.8元素存储

4.总结

4.1: 1.7原理总结

  1. 底层结构:哈希表.(数组+链表)
  2. 数组的长度默认为16,加载因子为0.75
  3. 首先会先获取元素的哈希值,计算出在数组中应存入的索引
    1. 判断该索引处是否为null
    2. 如果是null,直接添加
    3. 如果不是null,则与链表中所有的元素,通过equals方法进行比较属性值只要有一个相同就不存入,如果都不一样,就存入.

4.2: 1.8原理总结

  1. 底层结构:哈希表.(数组+链表+红黑树)
  2. 当挂在下面的元素过多,那么不利于添加,也不利于查询,所以在1.8之后
  3. 当链表长度超过8的时候,自动转换为红黑树
  4. 存储流程不变.

对于hsahset中保存对象,一定注意正确重写equals和hsahcode方法,以保证存入的对象唯一性.

http://www.hotlads.com/news/5925.html

相关文章:

  • 正版电子书做的最好的网站谷歌搜索入口365
  • 做文学网站编辑的前景网络工程师培训班要多少钱
  • 网站开发毕业论文大纲简述企业网站如何推广
  • 做租车行网站夜狼seo
  • wordpress导出app网站seo关键词排名
  • 有用模板网官网福建seo外包
  • 网站建设 拖欠尾款上海网站seo策划
  • 个人网站成品怎样才能注册自己的网站
  • 赣州做网站哪家好网络广告一般是怎么收费
  • 两学一做夜校网站西安seo工作室
  • 网站建设演讲稿seo快速排名关键词
  • 医院网站建设的目的公众号软文怎么写
  • 怎么免费建设个人网站2023年新闻摘抄十条
  • 旅游门户网站有哪些淘宝指数转换工具
  • 营销案例分析报告模板优化营商环境条例解读
  • 网站被黑了你会怎么想你该怎么做av手机在线精品
  • 天津市住房与城乡建设部网站网站的seo 如何优化
  • 有哪些高端的网站百度ai助手入口
  • 可以做烟的网站吗seo免费优化公司推荐
  • 和嗲囡囡和做的网站运营推广怎么做
  • 公司做网站建设专业搜索引擎优化电话
  • 龙口有没有做网站的微信推广软件有哪些
  • 个人做网站靠什么挣钱电脑突然多了windows优化大师
  • 临沂网站建站专业公司域名大全查询
  • 旅行社营业网点可以做网站吗网站快速优化排名官网
  • 网站开发公司tahmwlkj长尾关键词挖掘熊猫
  • 微信小程序开发编辑器山东seo
  • 做商城网站软件开发公司简介
  • 前几年做啥网站致富长沙靠谱seo优化费用
  • 贵阳有哪家做网站建设好点的珠海企业网站建设