目录
[1.1 基于HashMap实现](#1.1 基于HashMap实现)
[1.2 实现了Set接口](#1.2 实现了Set接口)
[1.3 实现了序列化和可克隆化](#1.3 实现了序列化和可克隆化)
[2.1 添加元素add()](#2.1 添加元素add())
[2.2 删除指定单个元素remove()](#2.2 删除指定单个元素remove())
[2.3 删除所有元素clear()](#2.3 删除所有元素clear())
[2.4 判断是否包含元素contains()](#2.4 判断是否包含元素contains())
[2.5 判断是否为空isEmpty()](#2.5 判断是否为空isEmpty())
[2.6 获得大小size()](#2.6 获得大小size())
[2.7 遍历HashSet](#2.7 遍历HashSet)
[2.7.1 使用iterator()迭代器](#2.7.1 使用iterator()迭代器)
[2.7.2 for循环遍历](#2.7.2 for循环遍历)
1.原理
1.1 基于HashMap实现
HashSet是个存数据的集合,在HashSet中只能输入一个值。
所以允许空值(默认null)
不是线程安全的(hashMap也不安全)
java
private transient HashMap map;
// Constructor - 1
// All the constructors are internally creating HashMap Object.
public HashSet()
{
// Creating internally backing HashMap object
map = new HashMap();
}
// Constructor - 2
public HashSet(int initialCapacity)
{
// Creating internally backing HashMap object
map = new HashMap(initialCapacity);
}
// Dummy value to associate with an Object in Map
private static final Object PRESENT = new Object();
1.2 实现了Set接口
与Set一样不允许存入重复数据,而且数据是随机存取(无序的)
1.3 实现了序列化和可克隆化
便利与数据的直接存储和取出利用
2.实现操作
2.1 添加元素add()
注意重复的元素不会存入
java
hs.add("Geek");
2.2 删除指定单个元素remove()
java
hs.remove("B");
2.3 删除所有元素clear()
java
hs.clear();
2.4 判断是否包含元素contains()
返回值为boolean,若存在元素返回true,为空返回false
java
boolean isNotEmpty = hs.contains();
2.5 判断是否为空isEmpty()
与contains恰好相反
java
boolean con = hs.isEmpty();
2.6 获得大小size()
java
int size = hs.size();
2.7 遍历HashSet
2.7.1 使用iterator()迭代器
java
/**获取对应set的迭代器*/
Iterator itr = hs.iterator();
while (itr.hasNext()){
//TODO
}
2.7.2 for循环遍历
java
for (String s : hs){
//TODO
}