Set接口定义
Collection接口可以存放重复元素,也可以存放不重复元素。List可以存放重复元素,Set就是不重复的元素。
通过元素的equals方法,来判断是否为重复元素。
Set集合取出元素的方式可以采用:迭代器,增强 for
HashSet(哈希表)
此类实现了Set接口,由哈希表(实际是HashMap实例)支持。它不保证set的迭代顺序,特别是它不保证该顺序恒久不变。此类允许使用null元素。
特点:无序集合,存储和取出的顺序不同,没有索引,不存储重复元素。代码的编写和ArrayList完全一致。
底层数据结构:哈希表(链表和数组的结合体);存储取出都比较快;线程不安全,运行速度快;
对象的哈希值
如果没有重写父类,每次运行的结果都是不同的整数;
如果子类重写父类的方法,哈希值,自定义;
存储到HashSet的依据;
字符串的哈希值
String类继承Object,重写了父类的方法hashCode,
LinkedHashSet集合
基于链表的哈希表实现;
继承自HashSet;
HashSet去重:底层是哈希表存储元素去重,用的是hashcode和equals方法