码迷,mamicode.com
首页 > 其他好文 > 详细

阿里面试实战题1----TreeSet,HashSet 区别

时间:2019-08-05 21:48:18      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:ref   hashset   col   ret   log   红黑树   顺序   color   black   

TreeSet,HashSet 区别

TreeSet

1 public class TreeSet<E> extends AbstractSet<E>
2     implements NavigableSet<E>, Cloneable, java.io.Serializable
3 {
4     public TreeSet() {
5         this(new TreeMap<E,Object>());
6     }  
7 }

 

可以从代码中明显看出。TreeSet的底层其实是TreeMap。

而TreeMap是一个有序的key-value集合,它是通过红黑树实现的。

TreeMap基于红黑树(Red-Black tree)实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparable 进行排序(实现其compareTo进行排序),具体取决于使用的构造方法。

TreeMap可以详细看这篇   TreeMap 还能排序?分析下源码就明白了

 

HashSet

1 public HashSet() {
2     map = new HashMap<>();
3 }

很明显,底层是HashMap实现。具体看这篇文章。基于JDK1.8的HashMap分析

 

TreeSet,HashSet 区别

  • TreeSet底层是TreeMap,HashSet底层是HashMap
  • TreeSet增加查找删除是O(lgn)。HashSet增加查找删除是O(1),最坏情况是O(n)
  • TreeSet底层TreeMap可以有序,HashSet底层HashMap一定无序。

 

阿里面试实战题1----TreeSet,HashSet 区别

标签:ref   hashset   col   ret   log   红黑树   顺序   color   black   

原文地址:https://www.cnblogs.com/wenbochang/p/11285953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!