版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Dian1pei2xiao3/article/details/84856394
public static void main(String [] args){
/**hashset特点:
* 1.继承关系
* public class HashSet<E>
* extends AbstractSet<E>
* implements Set<E>, Cloneable, java.io.Serializable
* 2.构造器
* 无参构造器调用hashmap构造器
* public HashSet() {
* map = new HashMap<>();
* }
* 其中map 的数据类型为hashmap,value值为object
* private transient HashMap<E,Object> map;
*/
HashSet<String> hashSet=new HashSet<String>();
/**hashset插入元素本质是对hashmap插入键值对,其中的value值为object
* 因此hashset插入的值为key,则hashset的特点为:
* 1.不能重复
* 2.只能有一个null值
*/
hashSet.add("zs");//增加元素
hashSet.add("ls");
hashSet.add("zy");
/**源码分析:
* 底层调用hashmap的put方法
* public boolean add(E e) {
* return map.put(e, PRESENT)==null;
* }
* private static final Object PRESENT = new Object();
*
*/
hashSet.remove("zy");//删除元素
/**
* 底层调用hashmap的remove方法
*
* public boolean remove(Object o) {
* return map.remove(o)==PRESENT;
* }
*/
//遍历方式
System.out.println("增强for循环");
for (String str:hashSet) {
System.out.println(str);
}
//迭代器遍历
System.out.println("迭代器遍历");
Iterator<String> iterator = hashSet.iterator();
while (iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
/*
源码分析:
public Iterator<E> iterator() {
return map.keySet().iterator();
}
底层调用hashmap的对key值得遍历方法
*/
System.out.println( hashSet.size());//计算存储元素的个数
}