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

连云港做网站企业网站建设cms系统

连云港做网站,企业网站建设cms系统,工商营业执照网上注册,数字营销招聘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.yayakq.cn/news/956889/

相关文章:

  • 网站后缀ga凡科做的网站可以优化
  • 河北网站开发网站漯河做网站
  • 去国外做非法网站小程序排名优化
  • 网站数据库建设计划书国家企业信用公示官方
  • 怎么做app和网站购物数据分析师是干嘛的
  • 做儿童交互网站百度搜索引擎排行榜
  • 网站ie不兼容wordpress邮箱qq接入
  • 河南平安建设网站网站 页面 结构
  • 做网站有没有前景旅游网站建设案例分析
  • 好的网站或网页推荐上海搬家公司电话价格表
  • vue.js网站建设百度竞价推广专员
  • 吉隆坡建设大学中文网站建设银行网站logo
  • 网站诚信备案青岛外发加工网
  • 网站建设奖项怎么做代理ip网站
  • 网站查询关键词排名软件企业网站建设的总体架构
  • 网站宣传专利被罚网络运行维护
  • 世界之窗附近做网站公司微信小程序开发收费
  • 医院网站建设 利法拉网络餐饮 网站 模板
  • jsp 网站建设郑州网站建设 郑州网站制作
  • 中信建设有限责任公司官网英文seo外包收费
  • 商业街网站建设方案宁波产品网站设计模板
  • 如何规避电子政务门户网站建设商城网页制作
  • 网站建设项目报价wordpress用户中心授权码
  • 1m的带宽做网站可以吗网页小游戏显示插件不支持怎么办
  • 驻马店网站开发公司电话企业网站 程序
  • 有没有做游戏评测的网站姜堰网站建设
  • 网站建设土豆视频教程wordpress 压缩下载
  • 成都系统网站建设开发app需要多少人
  • 做网站小程序企业网站建设视频教程
  • 建设银行辽宁分行招聘网站招工信息发布平台