HashSet的自定义实现

Posted tenwood

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashSet的自定义实现相关的知识,希望对你有一定的参考价值。

package com.cy.collection;

import java.util.HashMap;

/**
 * HashSet自定义实现
 * 是使用hashMap实现的
 * 可以看一下HashSet的源码,非常简单,就是调用hashMap的实现
 * @author CY
 *
 */
public class HashSet {
    private HashMap map;
    private static final Object PRESENT = new Object();

    public HashSet() {
        map = new HashMap();
    }
    
    /**
     * set的不可重复就是利用了hashMap的键对象不可重复
     * @param o
     */
    public void add(Object o){
        map.put(o, PRESENT);
    }
    
    public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }
    
    public int size() {
        return map.size();
    }
}

 

Test.java测试类:

package com.cy.collection;

public class Test {

    public static void main(String[] args) {
        HashSet set = new HashSet();
        set.add("aa");
        set.add(new String("aa"));
        set.add("bb");
        
        System.out.println(set.size());
    }
    
    //输出:2
}

 

以上是关于HashSet的自定义实现的主要内容,如果未能解决你的问题,请参考以下文章

HashSet存储过程中如何排除不同的自定义对象?

片段中的自定义列表适配器

Three.js 中的自定义纹理着色器

VS Code中自定义Emmet代码片段

片段内的自定义列表不起作用

带有圆角而不是 100% 屏幕宽度的自定义片段对话框