学习笔记 容器--collection--HashSet类
一、Set接口特点
1.1、无序,不可重复
无序:指Set中的元素没有索引,只能遍历查找
不可重复:指不允许加入重复的元素,确切的讲,新元素如果和 Set中 的某个元素通过equals()方法对比为true,则只能保留一个
常用的实现类有:HashSet,TreeSet等,我们一般常用HashSet。
二、HashSet容器类
2.1、特性
HashSet是一个没有重复元素且不能保证排列顺序的集合
HashSet允许存入null
HashMap是是哈希算法实现
HashSet的底层是由HashMap实现的(HashSet本质就是一个简化版的HashMap)
2.2、算法原理
Hash算法也称散列算法:
2.3、HashSet存储特征分析
HashSet是一个不保证 元素顺序 且没有 重复元素 的集合,线程是不安全的。HashSet允许有null元素
无序,不可重复
无序:
在HashSet中底层是使用HashMap存放元素的。
HashMap底层使用的是 数组与链表 实现的元素的存储,元素在数组中存放时,并不是有序存放,也不是随机存放,而是对元素的哈希值进行运算决定元素在数组中的位置。
Setset= new HashSet<>();
set.add("s");
set.add("m");
set.add("e");
set.add("ll");
set.add("e"); //Set接口特点,不允许加入重复的元素
for (String s:set) //因为没有索引,所以只能增强循环
System.out.print(s); //不能保证有序输出,本来是smell的
不重复:
当两个元素的哈希值进行运算后 得到相同的数组中 的位置时,通过equals()方法对比两个元素是否相同,如果元素相同则不会添加该元素
存储结构