我们先弄清HashSet的特点:
1.HashSet中元素不可重复
2.HashSet不能保证元素的顺序,这里的顺序指的是添加顺序
3.HashSet不同步
4.HashSet集合中可放null值
简单理解:HashSet和Hashtable的区别:(以及Hashmap的区别:)
HashTable中的方法加了同步锁(synchronized),所以对象是线程安全,
而HashMap是异步的,所以存放的对象并不是线程安全的,
而HashSet的底层是用HashMap实现的,所以它也不是线程安全的。
HashTable和HashMap区别:
①:继承的父类不同 ;
②:线程安全性不同;
③:是否提供contains方法;
④:key和value是否允许null值,其中key和value都是对象,并且不能包含重复key,但可以包含重复的value。Hashtable中,key和value都不允许出现null值。HashMap中,null可以作为键,这样的键只有一个;当用get()方法返回null值时,可能是 HashMap中没有该键,也可能使该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。 ⑤:哈希值的计算方法不同,Hashtable直接使用的是对象的hashCode,而HashMap则是在对象的hashCode的基础上还进行了一些变化。
⑥:内部实现使用的数组初始化和扩容方式不同,内存初始大小不同,HashTable初始大小是11,而HashMap初始大小是16。
HashMap和HashSet的区别:
①:HashSet是set的一个实现类,hashMap是Map的一个实现类;
②:HashSet以对象作为元素,而HashMap以(key-value)的一组对象作为元素,且HashSet拒绝接受重复的对象.HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set;
这里HashSet就是其实就是HashMap的一个视图。而 HashSet内部就是使用Hashmap实现的,和Hashmap不同的是它不需要Key和Value两个值;
本文详细解析了HashSet和HashMap的特点及区别,包括它们的线程安全性、null值处理、内部实现差异等,同时对比了Hashtable与HashMap的不同之处。

602

被折叠的 条评论
为什么被折叠?



