HashSet

HashSet底层实现

Posted by Ruizhi Ma on July 8, 2019

#

package cn.sxt.myCollection;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class SxtHashSet {
	
	HashMap map;
	
	private static final Object PRESENT = new Object();
	
	public SxtHashSet(){
		map = new HashMap();
	}
	
	public int size(){
		return map.size();
	}
	
	public void add(Object o){
		map.put(o, PRESENT);
	}
	
	@Override
	public String toString() {
		
		StringBuilder sb = new StringBuilder();
		
		sb.append("[");
		
		for (Object key : map.keySet()) {
			sb.append(key + ",");
		}
		
		sb.setCharAt(sb.length() - 1, ']');;
		
		return sb.toString();
	}
	
	
	public static void main(String[] args) {
		Set<String> set1 = new HashSet<String>();
		
		set1.add("sober");
		set1.add("nora");
		set1.add("sober");
		System.out.println(set1);
		set1.remove("sober");
		System.out.println(set1);
	}

}

运行结果:
[nora, sober]
[nora]

注意:重写toString方法多关注关注