不允许有重复元素的集合
允许有 null 值
HashSet 是无序的,即不会记录插入的顺序。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
HashSet 实现了 Set 接口。
无序性:存储顺序根据hash值决定
不可重复性:判断按照equals()。
存储时如果有元素的哈希值相同用equal()判断是否相同,相同就不可以加,不相同就链表连接添加,jdk7占原来数组的位置,jdk8原来的数组指向。
使用率超过0.75,就2倍扩容:16、32、64、128
不用==,用equals()
一定要重写hashcode()和equals()
重写的尽可能保持一致性,所以一般是一起重写
先判断位置hashcode()在判断内容equals()
修改内容不可以修改位置hashcode()
sites.contains("Taobao")//判断元素是否存在
sites.add("Runoob"); // 重复的元素不会被添加
sites.remove("Taobao"); // 删除元素,删除成功返回 true,否则为 false
sites.clear(); // 删除所有
sites.size()