一、Set 回顾
一个不包括重复元素(包括可变对象)的 Collection,是一种无序的集合。Set 不包含 a.equals(b) 的元素对 a 和 b,并且最多有一个 NULL。
泥瓦匠的记忆宫殿:
1、 不允许包含相同的元素
2、 判断对象是否相同,根据 equals 方法
二、HashSet
一个按着 Hash 算法来存储集合中的元素,其元素值可以是 NULL。它不能保证元素的排列顺序。同样,HashSet 是不同步的,如果需要多线程访问它的话,可以用
Collections.synchronizedSet 方法来包装它:
同上一节一样,用迭代器的时候,也要注意 并发修改异常
ConcurrentModificationException 。
要注意的地方是,HashSet集合判断两个元素相等不单单是equals方法,并且必须hashCode()方法返回值也要相等。看下面的例子:
Run 以下,控制台如下输出: