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

Posted wenbochang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里面试实战题1----TreeSet,HashSet 区别相关的知识,希望对你有一定的参考价值。

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 区别的主要内容,如果未能解决你的问题,请参考以下文章

Spring家族面试题+阿里技术官实战心得+性能优化+并发+分布式等

刚参加完阿里Java P6面试归来,6点面试经验总结!(含必考题答案)

刚参加完阿里Java P6面试归来,6点面试经验总结!(含必考题答案)

字节跳动+阿里+华为+腾讯等大厂Java面试题,层层深入

2021精选 Java后端面试题资料大全 SpringBoot,Kafka,Mysql,Redis等PDF资料,实战项目,阿里巴巴,腾讯,字节,京东,美团,滴滴,Bilibili面试经历,实用干货

java开发实战,搞懂这些直接来阿里入职