自己实现HashSet
Published on 2017-11-14 09:32 in 暂未分类 with 是奉壹呀

自己实现HashSet

    HashSet的实现相对比较简单。它强依赖于HashMap,包括底层数据实际上就是存储于HashMap,由于HashMap在哈希碰撞下,如果value值相同,那么将会覆盖该value,HashSet正是利用这一特性来达到元素唯一的。

    一属性

    定义一个HashMap装载数据,定义一个final的Object来做为HashMap的value。

    public class MyHashSet<E> {
        
        private transient MyHashMap<E, Object> map;
        
        private transient final Object value = new Object();
    
    }

    添加构造方法

    复制代码
    public MyHashSet(){
            map = new MyHashMap<E, Object>();
        }
        
        public MyHashSet(int initCount){
            map = new MyHashMap<E, Object>(initCount);
        }
        
        public MyHashSet(int initCount, float loadFactor){
            map = new MyHashMap<E, Object>(initCount, loadFactor);
        }
    复制代码

    二方法

    1增加

    返回空表示添加成功,不为空表示已经存在该元素。

    public boolean add(E e){
            return map.put(e, value) == null;
        }

     2删除

    public void remove(E e){
            map.remove(e);
        }

    3迭代

    直接从HashMap得到迭代器。

    public class MyHashSet<E> implements Iterable<E>{  
        public Iterator<E> iterator(){
            return map.keySet().iterator();
        }  
    }

     

    posted @   是奉壹呀  阅读(197)  评论(0编辑  收藏  举报
    编辑推荐:
    · 如何编写易于单元测试的代码
    · 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
    · .NET Core 中如何实现缓存的预热?
    · 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
    · AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
    阅读排行:
    · 周边上新:园子的第一款马克杯温暖上架
    · Open-Sora 2.0 重磅开源!
    · .NET周刊【3月第1期 2025-03-02】
    · 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
    · [AI/GPT/综述] AI Agent的设计模式综述
    点击右上角即可分享
    微信分享提示