java数据结构17_HashSet类详解
1.Set接口介绍 Set接口继承自Collection,Set接口中没有新增方法,方法和Collection保持完全一致。我们在前面通过List学习的方法,在Set中仍然适用。因此,学习Set的使用将没有任何难度。 Set容器特点: 无序、不可重复 。无序指Set中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素。 Set 集合有多个子类,这里我们介绍其中的 HashSet、LinkedHashSet 、TreeSet这三个集合。 2. HashSet类详解 HashSet是采用哈希算法实现,底层实际是用HashMap实现的(HashSet本质就是一个简化版的HashMap),因此,查询效率和增删效率都比较高。 我们打开HashSet的源码,发现里面有一行核心代码: 我们发现里面有个map属性,这就是HashSet的核心秘密。我们再看add()方法,发现增加一个元素说白了就是在map中增加一个键值对,键对象就是这个元素,值对象是名为PRESENT的Object对象。说白了,就是“往set中加入元素,本质就是把这个元素作为key加入到了内部的map中”。 由于map中key都是不可重复的,因此,HashSet天然具有“不可重复”的特性。 HashSet 的使用 给 HashSet 中存储 JavaAPI 中提供的类型元素时,不需要重写元素的 hashCode 和