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
}

 

posted on 2018-06-19 22:54  有点懒惰的大青年  阅读(192)  评论(0编辑  收藏  举报