JAVA中的Hashset类

HashSet扩展AbstractSet并且实现Set接口。它创建一个类集,该类集使用散列表进行存

储。正像大多数读者很可能知道的那样,散列表通过使用称之为散列法的机制来存储信息。

在散列(hashing)中,一个关键字的信息内容被用来确定唯一的一个值,称为散列码(hash

code)。而散列码被用来当做与关键字相连的数据的存储下标。关键字到其散列码的转换

是自动执行的――你看不到散列码本身。你的程序代码也不能直接索引散列表。散列法的

优点在于即使对于大的集合,它允许一些基本操作如add( ),contains( ),remove( )和size( )

方法的运行时间保持不变。

下面的构造函数定义为:

HashSet( )

HashSet(Collection c)

HashSet(int capacity)

HashSet(int capacity, float fillRatio)

第一种形式构造一个默认的散列集合。第二种形式用c中的元素初始化散列集合。第三

种形式用capacity初始化散列集合的容量。第四种形式用它的参数初始化散列集合的容量和

填充比(也称为加载容量)。填充比必须介于0.0与1.0之间,它决定在散列集合向上调整大

小之前,有多少能被充满。具体的说,就是当元素的个数大于散列集合容量乘以它的填充

比时,散列集合被扩大。对于没有获得填充比的构造函数,默认使用0.75。

HashSet没有定义任何超过它的超类和接口提供的其他方法。

重要的是,注意散列集合并没有确保其元素的顺序,因为散列法的处理通常不让自己

参与创建排序集合。如果需要排序存储,另一种类集――TreeSet将是一个更好的选择。

这里是一个说明HashSet的例子。

// Demonstrate HashSet.

import java.util.*;

class HashSetDemo {

public static void main(String args[]) {

// create a hash set

HashSet hs = new HashSet();

// add elements to the hash set

hs.add("B");

hs.add("A");

hs.add("D");

hs.add("E");

hs.add("C");

hs.add("F");

System.out.println(hs);

}

}

下面是该程序的输出:

[A, F, E, D, C, B]

如上面解释的那样,元素并没有按顺序进行存储。


你可能感兴趣的:(java,关键字,hashset,程序,Capacity)