+ -
当前位置:首页 → 问答吧 → HashSet内部是根据什么排序的??

HashSet内部是根据什么排序的??

时间:2011-12-04

来源:互联网

虽说HashSet是无序的,也就是说存入的顺序和取出的顺序不一致,但是在HashSet内部却还是有顺序的,因为每次将HashSet集合对象迭代打印出来的顺序是一致的,那么内部是根据什么排序...求解?

作者: a920123164   发布时间: 2011-12-04

hash值吧,很好的问题。看看源代码更确定。
每个对象都有hashCode()这个方法,是继承自Object的,所有根据hash值来排序是很合理的。

作者: daijope   发布时间: 2011-12-04

HashSet是无序的,如果你要排序的set那么用TreeSet。Set的内部实现都是使用了Map.你可以看看JDk的源码.

作者: xiongyu2006   发布时间: 2011-12-04

哈希表的基本思想是:以线性表中每个元素的关键字key为自变量,通过一定的函数关系h(key)计算出函数的值,把这个值作为数组的下标,将元素存入对应的数组元素中。

作者: hq333   发布时间: 2011-12-05

HashSet内部的存储是由hash函数定的,例如:
13,11,5,7,19;hash函数假设是%9,运算得:4,2,5,7,1,那么地址1是19,地址2是11,地址4是13,地址5是5,地址7是7。
  真正的hash函数较复杂,它要尽量保证两个数运算后,得到的值不一样,如相同,则属于冲突,由一冲突程序处理。

作者: hq333   发布时间: 2011-12-05