浅析HashSet和TreeSet的区别及底层实现
2019-05-09 本文已影响0人
柒浅丶Belief
HashSet:存储无序,无索引,元素不可重复,可存储null,底层实现为创建一个HashMap,取HashMap的键作为数据存储
![](https://img.haomeiwen.com/i8191948/82b2babf204ae9d6.png)
![](https://img.haomeiwen.com/i8191948/54dc0f1c7a46498b.png)
![](https://img.haomeiwen.com/i8191948/b2301ca5fb49d7e4.png)
需要重写hashcode和equals方法来保证值的唯一性,添加,删除和 HashSet 包括的方法的持续 时间复杂度是 O(1) 。
TreeSet:存储为自然排序,无索引,元素不可重复,不可存储null,底层是创建一个继承自SortedMap的NacigableMap,引用指向TreeMap;
![](https://img.haomeiwen.com/i8191948/7a4ddcbf1393cde3.png)
依赖Comparable和Comparetor方法实现规则进行自然排序,添加,删除和 TreeSet 包含的方法的持续时间复杂度 是 O(logn) 。