其实这个问题可以通过源码就是可以看到的,
首先看HashSet的add方法,
public boolean add(E e) { return map.put(e, PRESENT)==null; }
调用add方法,内部调用的是HashMap,所以说:HashSet的底层是通过hashmap实现的,add的值作为map的key,因为map中的key必须是唯一的,这样就保证了HashSet中的值的唯一性.
其实这个问题可以通过源码就是可以看到的,
首先看HashSet的add方法,
public boolean add(E e) { return map.put(e, PRESENT)==null; }
调用add方法,内部调用的是HashMap,所以说:HashSet的底层是通过hashmap实现的,add的值作为map的key,因为map中的key必须是唯一的,这样就保证了HashSet中的值的唯一性.