zoukankan      html  css  js  c++  java
  • Collection集合-05.HashSet

           在集合使用中,我们经常会用到HashSet,一般用于过滤一组数据,保证数据唯一。今天看一下HashSet的源码,之前看过HashMap,再来看,HashSet可以说是很简单了。

    源码分析

    初始化

    • 底层是通过HashMap存储数据的。

    • PRESENT成员变量用于HashMap的value值

    private transient HashMap<E,Object> map;
    
    private static final Object PRESENT = new Object();
    
    public HashSet() {
        map = new HashMap<>();
    }
    
    

    增删改查操作

    • 增加操作
    public boolean add(E e) {
         return map.put(e, PRESENT)==null;//判断是否首次插入数据
    }
    
    • 删除操作
     public boolean remove(Object o) {
          return map.remove(o)==PRESENT;//判断删除的数据是否预给定的数据
      }
    
    • 数据查询(通过HashMap主键遍历)
     public Iterator<E> iterator() {
            return map.keySet().iterator();
        }
    

    总结

    • 通过上面其实也不难看出来,HashSet和HashMap的缘分不浅。

      • HashSet中存储的数据是存放在HashMap的key,value都是同一个静态成员变量;

      • 由于上面说的特性,HashSet中存放的数据是不会出现重复的现象。

      • 也因为本质其实是HashMap进行处理,所以会有对编程而言,数据存放是“无序”而内部实质是“有序”的情况。

  • 相关阅读:
    SQLAlchemy介绍
    Flask介绍
    逆转的生殖——形而下的EOE补完仪式…
    huiyin
    实验课上
    我的博客今天1岁213天了,我领取了…
    关于直接写屏
    OceanBorn&nbsp;&nbsp;歌曲列表
    Gethsemane
    光辉岁月-Beyond
  • 原文地址:https://www.cnblogs.com/perferect/p/13790100.html
Copyright © 2011-2022 走看看