栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

这个HashSet如何产生排序的输出?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

这个HashSet如何产生排序的输出?

编辑:从Java 8及更高版本开始,以下内容不再适用。这证明您不应该依赖未记录的Java行为。


此行为是由几个单独的原因引起的:

  • 整数对自己散列
  • 在Java中,
    HashMap
    s和
    HashSet
    s由数组备份
  • 它们还使用较高的位修改哈希,以修改较低的位;如果哈希值在0..15范围内,则不会被修改
  • 对象运行的存储桶取决于修改后的哈希的低位
  • 在地图或集合上进行迭代时,将依次扫描内部表

因此,如果您将一些小的(<16)整数添加到hashmap / hashset中,则会发生以下情况:

  • 整数
    i
    具有哈希码
    i
  • 因为它小于16,所以它的修改哈希也
    i
  • 它落在桶号。
    i
  • 进行迭代时,将按顺序访问这些存储桶,因此,如果您存储的所有存储桶都是小整数,它们将以升序检索

请注意,如果存储桶的初始数量太少,则整数可能会落入没有编号的存储桶中:

HashSet<Integer> set = new HashSet<>(4);set.add(5); set.add(3); set.add(1);for(int i : set) {  System.out.print(i);}

版画

153



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486527.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号