首页 理论教育 HashSet类详解

HashSet类详解

时间:2023-10-19 理论教育 版权反馈
【摘要】:HashSet实现了Set接口,由哈希表支持。HashSet中提供了默认的构造器HashSet,可以初始化一个指定大小的集合。上述例子中使用了remove()方法将集合中值为“D”的元素进行移除;同时,给出了HashSet中遍历所有元素的两种方式的示例,一种是foreach,另一种是使用迭代器Iterator。其运行结果为:图11.4.1HashSet使用示例除了Collection中的基础方法之外,HashSet类并没有提供过多的其他方法。

HashSet类详解

HashSet实现了Set接口,由哈希表(实际上是一个HashMap对象)支持。它不保证Set内元素的顺序,因此每次在访问或迭代遍历时取出元素的顺序并不相同。

使用时通常将变量类型声明为Set类型,可以通过具体的实现类来定义不同对象的具体实例化类型。

动手写11.4.1

上述代码中,第一个指定声明了元素都是String类型的Set集合;第二个指定中,E是Java中合法的数据类型,代表它可以是Java中任意的合法数据类型。HashSet中提供了默认的构造器HashSet(int initialCapacity),可以初始化一个指定大小的集合。

动手写11.4.2

(www.xing528.com)

上述示例中,使用了add()方法给集合添加元素。需要注意的是,当添加相同的值“B”时,集合中并没有出现重复的元素。上述例子中使用了remove()方法将集合中值为“D”的元素进行移除;同时,给出了HashSet中遍历所有元素的两种方式的示例,一种是foreach,另一种是使用迭代器Iterator。其运行结果为:

图11.4.1 HashSet使用示例

除了Collection中的基础方法之外,HashSet类并没有提供过多的其他方法。

HashSet是非线程同步的,在多线程情况下,如果多个线程同时访问一个HashSet对象,当至少一个线程修改了该对象时,需要使用Collection类中的synchronizedSet()方法来包装,使这个对象对外部保持同步(多线程的概念会在后续章节中进行介绍,这里可以将多线程简单理解为不同的使用方来调用同一个对象时发生的一种特殊情况)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈