Java中的数据结构 2.HashSet

HashSet是无序的集合,但它可以快速地查找元素

Hash值可以被快速地运算,且Hash值只与对象的状态有关

Java中HashSet是由储存在ArrayList中的一系列LinkedList实现的,每一个LinkedList被称为一个bucket,如果这里有16个bucket(Java中的默认值),而一个元素的Hash值为76268,则它会被储存到12号bucket(76268%16 = 12),如果该Bucket已经储存了元素,则会将它与所有元素比较,如果它是新的,则添加到LinkedList中

HashSet的bucket的值可以在构造时给出,最佳的值是储存的元素数量的75%到150%

也可以设置HashSet的load factor,这是一个0-1的浮点数,当HashSet占用到那么多时,它会自动进行rehashed操作,创建一个更大的表(原来的两倍),并把旧的数据插入到新的表中,并销毁旧的表

HashSet实现了Iterable接口,可以用这个遍历整个HashSet

发表评论

邮箱地址不会被公开。