HashSet:底层是哈希表,线程不安全
首先要明白HashSet是如何实现去重的:
HashSet内部默认对String类型的集合进行去重,它的原理很简单
就是通过调用元素内部的hashCode和equals方法实现去重
1、首先调用hashCode方法,比较两个的哈希值,如果哈希值不同,直接认为是两个对象,停止比较
2、如果哈希值相同,再去调用equals方法,若判断返回true,认为是同一个对象,返回false认为是不同对象
-------HashSet在add()方法内部实现了去重功能,默认调用的是字符串的hashCode和equals方法实现去重
-------所以在你添加字符串元素时,如果相同则自动去重
* 实例:使用HashSet实现对Person1类对象的去重
* 分析:要去重写Person1的hashCode和equals方法
* 自己制定比较规则:按照姓名和年龄比较
注意:1、hashSet本身不能实现排序
2、对于自定义的类,要想按照自己制定的比较规则进行去重,必须重写H