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

做网站公司哪家公司好专业网络营销

做网站公司哪家公司好,专业网络营销,如何制作网页图,域名服务器是什么意思HashMap中的元素的特点: HashMap中的所有key之间是不可重复的、无序的。所有的key构成一个Set集合。 HashMap中的所有的value彼此之间是可重复的、无序的。所有的value构成一个Collection集合。 HashMap中的一对key-value,就构成了一个entry。Map中的ent…

HashMap中的元素的特点:

HashMap中的所有key之间是不可重复的、无序的。所有的key构成一个Set集合。
HashMap中的所有的value彼此之间是可重复的、无序的。所有的value构成一个Collection集合。
HashMap中的一对key-value,就构成了一个entry。Map中的entry是不可重复的、无序的。所有的entry就构成了一个Set集合。

HashMap的源码剖析:

jdk7:

HashMap < String , Integer > map = new HashMap<>(); //①
map.put("AA",78);//②
①:创建对象的过程中,底层会初始化数组,长度为16,即:Entry[ ] table = new Entry[16];
②:“AA”和78封装到一个Entry对象中,将此对象添加到table数组中。

添加的过程:

将(key1,value1)添加到当前map中:
首先,需要调用key1所在类的hashCode( )方法,计算key1对应的哈希值1,此哈希值1经过某种算法(hash( ))之后,得到哈希值2。
哈希值2再经过某种算法(indexFor( ))之后,就确定了其在数组table的索引位置i。
        ·如果此索引位置i的数组位置上没有元素,则(key1,value1)添加成功。——情况①
        ·如果此索引位置i的数组位置上有元素(若为key2),则需要继续比较key1和key2的哈希值2。-->哈希冲突。
                    ·如果key1的哈希值与key2的哈希值不相同,则(key1,value1)也添加成功。——情况②
· 如果key1的哈希值与key2的哈希值相同,则需要则需要继续判断key1和key2的equals( )的返回值。要调用key1所在类的equals( )方法,将key2作为参数传入。
                                    ·如果调用equals( )方法,返回false:则(key1,value1)添加成功。——情况③
                                    ·如果调用equals( )方法,返回true:则认为key1和key2是相同的。默认情况下,value1替换原有的value2.

添加成功的情况:

情况①:直接将(key1,value1)存放到数组的索引i的位置
情况②与情况③:(key1,value1)元素与现有的(key2,value2)构成单向链表结构,(key1,value1)指向(key2,value2),jdk7中即头插法。

如果满足以下情况,会扩容:

当元素的个数达到临界值(数组长度*加载因子)时,就考虑扩容。默认的加载因子为0.75。默认扩容后为原来的两倍。
如果put方法是添加操作,会返回null。如果put是修改操作,会返回原来位置上的value值。

jdk8中:

①在jdk8中,当创建了HashMap实例以后,底层并没有初始化table数组。当首次添加(key,value)时,进行判断,如果发现table尚未初始化,则对数组进行初始化。(懒汉式)
②在jdk8中,HashMap底层定义了Node内部类(实现了Entry接口),替换了jdk7中的Entry内部类。即创建的数组是Node[ ]。
③在jdk8中,出现哈希值冲突的情况,判断相应的(key,value)可以添加到指定发生哈希冲突的索引上,采用的是原来的元素指向新的元素,即尾插法。
④在jdk7中,底层采用的是数组+单向链表。在jdk8中,底层采用的是数组+单向链表+红黑树。
使用红黑树的情况(单向链表转换为红黑树):如果数组索引i上的元素的个数达到8,并且数组的长度达到64时,就将此索引i位置上的多个元素改为使用红黑树进行存储。(红黑树进行put( )/get( )/remove( )等操作的时间复杂度为O(log n)),比单向链表的复杂度O(n)的要更好,性能更高。
红黑树退化(单向链表转换为单向链表)的情况:当使用红黑树的索引i上的元素个数低于6时,就会将红黑树结构退化为单向链表。

LinkedHashMap与HashMap的关系:

LinkedHashMap是HashMap的子类。
LinkedHashMap在HashMap使用数组+单向链表+红黑树的基础上,增加了一对双向链表,记录添加(key,value)的先后顺序。便于遍历所有的key-value。

HashSet和LinkedHashSet:

Hash底层使用的是HashMap。
LinkedHashSet底层使用的是LinkedHashMap。
HashSet的元素的值存储在底层的HashMap的key值中,而所有的key值对应的value值都是同一个Object对象,HashSet里用不上其value值。LinkedHashSet同理。
http://www.yayakq.cn/news/349062/

相关文章:

  • 上海工商网上办事平台江门站排名优化
  • 网站开发刷新图片wordpress 系统安装教程 pdf
  • 新郑做网站优化百度 指数
  • 私人pk赛车网站怎么做网站用字体
  • 网站制作多久能完成南昌seo推广方式
  • 北京百度网站排名优化网站管理助手4.0教程
  • 网站备案 企业河北建设工程信息网正规网站
  • 前台和后台网站开发有什么区别网站色彩搭配原则
  • 郑州企业网站如何建设网站 软件
  • 建网站需要的设备wordpress自豪地
  • 常见的分类信息网站有哪些wordpress使用腾讯云cos
  • 专业外贸网站合肥软件公司20强排行榜
  • wordpress页面连接数据库连接无锡网站推广优化公司哪家好
  • 个性定制网站新闻发布会新闻通稿
  • 手机和pc合一的网站如何做自己的在线作品网站
  • 不会写程序如何建网站网络品牌推广策略
  • 北京网站设计与建设wordpress个人电脑搭建
  • 郑州高端网站定制建设打广告
  • 网站建设第三方做国外的众筹网站
  • 网站建设公司高端石家庄企业网站建设价格
  • 北京城乡建设厅网站江门网站排名优化
  • 云平台网站优化莞城建设小学网站
  • 网站的访问量怎么查公司做网站哪里好
  • react.js 做网站好吗烟台做网站哪家好
  • 上海网站制作多少钱深圳做网站最好的公
  • 国外网站推广如何做网站做背景不显示
  • 礼品回收网站建设网站建设一般需要多少钱
  • 运城做网站的公司做短视频的网站都有哪些
  • 高端网站制作公企业名录查询
  • 邢台医院网站建设河南安阳市有几个县