Set接口不想List接口那样,对Collection接口进行了大量的扩充,而是完整地继承下了Collection接口。
集合接口定义了一个集合,并添加了类集中元素不允许重复的特性。它本身没有定义任何附加方法。在Set接口中有两个常用的子类:HashSet、TreeSet.
HashSet类
HashSet扩展自AbstraSet并且实现了Set接口。它创建一个类集,该类集使用散列表进行存储,而散列表则通过称之为散列法的机制进行信息的存储。HashSet里面所保存的数据是不能够重复的,并且没有顺序。
在散列(hashing)中,一个关键字的信息内容被用来确定唯一的一个值,称为散列码(hashcode),而散列码被当作与关键字相连的数据存储下标。关键字到散列码的转换是自动执行的--看不到散列码的本身。程序代码也不能直接索引散列表。散列表的优点在于即使对于相对大的集合,它也允许一些基本操作,如add()、contains()、remove()、size()等方法的运行时间保持不变。HashSet没有定义任何超类和接口之外的其他方法。
TreeSet类
如果需要为保存的数据进行排序,可以使用TreeSet子类完成。TreeSet为使用树来进行存储的Set接口提供了一个工具,对象是按着升序存储。访问和检索很快。在存储了大量的需要进行快速检索的排序信息时可以选择TreeSet。