java-集合之HashMap与HashSet与TreeMap分析

HashMap与HashSet的区别:
第一,HashSet实现的是单列集合的Set集合。所以它没有索引,不能存储重复元素,且存取无序。而HashMap实现的是双列集合的Map集合。
第二,HashMap使用的是key值来计算hashcode,而HashSet使用对象来计算hashcode,所以HashMap存储是键值对的形式存储,不能有重复的键。而是用HashSet存储对象的话,一般需要重写hashcode()和equals()方法,HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false。
第三,HashMap相比较HashSet较快,因为它是使用唯一的键来获取对象。
HashSet与TreeSet的区别:
不同点:
1.HashSet是无序de,而TreeSet底层有按照自然顺序排列的构建,所以TreeSet保存的数据是有序的,按照自然顺序存储。
2.TreeSet因为要进行自然排序,所以实现了Comparable接口,而TreeSet正是使用Comparable接口里的compareTo()方法来比较存储的对象大小关系。
3.HashSet实现类比较存储对象关系的话,是需要使用重写的hashcode()和equals()方法来实现。
4.HashSet底层使用的是hashtable来存储,而TreeSet底层使用的是红黑树来存储数据。
5.HashSet允许存储元素为null,但是只能放入一个null,而TreeSet不允许存储元素为null。

你可能感兴趣的:(java-集合之HashMap与HashSet与TreeMap分析)