天天看点

Java集合框架篇-54-HashSet概述和基本使用

      前面我们学习了集合接口的一些方法,然后学习了List接口下的ArrayList和LinkedList两个子类和基本的方法的操作演示。这篇开始,来学习Collection接口的另外一个分支,Set子接口下子类的相关方法。

1.API阅读

      打开API文档,然后搜索 Set,API上的第一句话就是:一个不包含重复元素的 collection。前面在集合框架继承体系图,我们介绍了Set集合中的特点是:没有索引,不能重复存储元素的基本特点。API中Set接口页面,发现方法和Collection接口的方法是一样的,什么add是添加元素,remove是删除元素,isEmpty是判断是否为空,toArray是转换数组。这些具体方法在Set接口都实现了,所以,下面我们通过学习Set接口下的具体子类来学习Set集合。Set集合下有两个子类,HashSet和TreeSet,我们先来学习HashSet相关方法的基本使用。

2.HashSet基本介绍和使用

       HashSet是Set集合的一个子类,底层是由哈希表实现的。而我们知道ArrayList底层是数组实现的,是有索引的。HashSet是没有索引的,下面我们来验证下HashSet集合不可以存储重复元素和HashSet集合的元素遍历方法。

package hashset;

import java.util.HashSet;

public class Demo1_HashSet {

	public static void main(String[] args) {
		HashSet<String> hs = new HashSet<>();
		boolean b1 = hs.add("a");
		boolean b2 = hs.add("a");		//Set集合中如果添加重复元素,返回是false
		hs.add("b");
		hs.add("c");
		//证明不能存储重复元素
		System.out.println(hs); 		//HashSet的间接父类重写了toString方法
		System.out.println(b1);
		System.out.println(b2);
		
		//使用for each循环比遍历HashSet元素
		for (String string : hs) {
			System.out.println(string);
		}
	}

}
           

输出:

[a, b, c]
true
false
a
b
c