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

本文深入解析了HashMap, HashSet和TreeSet三种集合类的特点与区别,包括它们的存储方式、数据排序、元素唯一性及性能差异。通过对比,帮助读者理解何时选用哪种集合类更合适。

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。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值