JAVA问题,为什么我的输出结果跟答案不一样
2个回答
展开全部
答案用的是JDK1.8,你自己测试用的是JDK1.7。
HashSet底层由HashMap实现,HashMap底层是一个数组,它的数组元素是一个链表。
在HashSet中添加一个值e时,对应数组中索引的位置由 (hash(e) & (数组大小-1)) 决定。
在你给出的代码中,此处数组大小默认是16。所以,此处数组索引由hash(e)决定。
但是,JDK1.8 与 JDK1.7中 HashMap 类的 hash() 方法不同,所以存储到数组中的索引位置自然不同。
实际存储位置不同,迭代器遍历打印出的结果自然不同。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询