说一下 TreeSet 和 HashSet 两个 Set 的内部实现结构和原理

: HashSet 底层对 HashMap 的能力进行封装,比如说 add 方法,是直接使用 HashMap 的 put 方法,比较简单,但在初始化的时候,我看源码有一些感悟:说一下 HashSet 小结的四小点。

  • 对组合还是继承的分析和把握,HashSet 采用组合 HashMap
  • 参数为集合的构造中:HashMap 初始化大小值的模版公式:取括号内两者的最大值(期望的值 / 0.75+1,默认值

TreeSet 底层主要是对 TreeMap 能力进行封装复用,我发现了两种非常有意思的复用思路

  • reeSet 直接使用 TreeMap 的某些功能,自己包装成新的 api
  • TreeSet 定义自己想要的 api,自己定义接口规范,让 TreeMap 去实现