HashSet、TresSet、HashMap、TreeMap 各自的区别

HashSet、TresSet、HashMap、TreeMap 的区别

HashSet与TreeSet

相同点:
  • 都是Set接口的实现类
  • 都不能重复
不同点
HashSetTreeSet
底层实现逻辑为哈希表底层实现逻辑为二叉树
能够存储null, 仅能存储一个null不能存储null
存储的数据是无序的存储的数据是排好序的

HashMap与TreeMap

相同点
  • 都是Map的实现类
  • 都是线程不安全的
  • 都是以键值对的形式存储的
不同点
HashMapTreeMap
存储的数据是无序的存储的数据是有序的(存储的键是有序的)
底层实现是hash表底层实现是红黑树
更适合 增、删 、定位元素(效率更高)更适合整体遍历或自定义排序

HashSet和HashMap

相同点
  • 底层实现逻辑都是哈希表
不同点
HashSetHashMap
为Set的实现类为Map的实现类
存储的数据为对象存储的数据以键值对存储
使用add方法添加数据使用put添加键值对
获取数据的速度慢获取数据的速度快(因为是使用key来获取值)
使用set的这个对象为生成hashCode的依据使用map的Key作为hashCode生成的依据

TreeSet和TreeMap

相同点
  • 底层实现都是二叉树
  • 存储的数据都是有序的
  • 都是非同步的 线程不安全的
  • 运行速度都比hash的慢
不同点
TreeSetTreeMap
Set的实现类Map的实现类
只存储对象数据以键值对的形式存储
不可以有重复的对象可以有重复的键值对

⚠️

  1. hashSet是不允许重复的 在向hashSet中添加新的元素的时候 确保已经在类中重写了equals和hashCode方法了 这样才能判断hashSet中是否有两个相同的元素
  2. 使用TreeSet保存对象的时候 要先确保类继承了Comparable方法 这样才能在确定该其中的大小关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值