阿里面试实战题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一定无序。

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

时间: 2024-10-15 05:36:26

阿里面试实战题1----TreeSet,HashSet 区别的相关文章

阿里面试实战题2----ReentrantLock里面lock和tryLock的区别

ReentrantLock ReentrantLock(轻量级锁)也可以叫对象锁,可重入锁,互斥锁.synchronized重量级锁,JDK前期的版本lock比synchronized更快,在JDK1.5之后synchronized引入了偏向锁,轻量级锁和重量级锁.以致两种锁性能旗鼓相当,看个人喜欢,本文主要介绍一下lock和tryLock的区别. Lock VS  TryLock 1 public void lock() { 2 sync.lock(); 3 } 4 5 public void

阿里最全面试100题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案

[阿里天猫.蚂蚁.钉钉面试题目] 1.微信红包怎么实现. 2.海量数据分析. 3.测试职位问的线程安全和非线程安全. 4.HTTP2.0.thrift. 5.面试电话沟通可能先让自我介绍. 6.分布式事务一致性. 7.nio的底层实现. 8.jvm基础是必问的,jvm GC原理,JVM怎么回收内存. 9.Java是什么. 10.API接口与SDI接口的区别(API是提供给别人的接口). 11.dubbo如何一条链接并发多个调用.Dubbo的原理,序列化相关问题. 12.用过哪些中间件. 13.做

hashset和treeset的区别

hashset 和 treeset的区别 hashset 和 treeset的区别 1.TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值. 2.HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束. 3.HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的 String对象,hashcod

安卓 ArrayList,LinkedList,HashSet,Vector,TreeSet的区别和使用

java的集合就那么几种 总体为:List,Set,Map (都是接口由其子类去实现具体的方法) ArrayList,LinkedList,Vector都属于List List:元素是有顺序的,元素可以重复因为每个元素有自己的角标(索引)  |-- ArrayList:底层的数据结构是数组结构,特点是:查询很快,增 删 稍微慢点,线程不同步 |-- LinkedList:底层使用的是链表数据结构,特点是:增 删很快,查询慢. |--Vector:底层是数组数据结构,线程同步,被ArrayList

7年Java老兵闭关整理出430道面试真题,全部掌握阿里也不过如此!

题目基本覆盖了整个Java后端题,因文章篇幅问题,我这里就不解答了,我已把题目整理成pdf文档,内容很全面,有需要的可以 点击这里 获取资料 话不多说,直接往下看↓ ↓ ↓ 一.性能调优面试专栏 1.1.tomcat性能优化整理 你这样给tomcat调优 如何加大comcat连接数 怎样加大tomcat的内存 Tomcat有几种部署方式 Tomcat的优化经验 1.2.JVM性能优化整理 Java类加载过程 Java内存分配 描述一下jVM加载class文件的原理机制? GC是什么?为什么要有G

阿里面试回来,想和Java程序员谈一谈(转载)

引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的. 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上

阿里面试回来,想和Java程序员谈一谈

引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的. 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上

刷《一年半经验,百度、有赞、阿里面试总结》&#183;手记

在掘金上看到了一位大佬发了一篇很详细的面试记录文章-<一年半经验,百度.有赞.阿里面试总结>,为了查漏补缺,抽空就详细做了下.(估计只有我这么无聊了哈哈哈) 有给出的或者有些不完善的答案,也尽力给出/完善了(可能有错,大家自行辨别).有些很困难的题目(例如实现Promise),附带相关链接(懒癌患者福利). 总的来说,将这些题目分成了"Javascript"."CSS"."浏览器/协议"."算法"和"We

阿里面试 Java 都问什么?万字总结!

作者:rhwayfunn blog.csdn.net/u011116672/article/details/50991618 拿到阿里实习offer,经历了5次面试,其中4轮技术面,1轮HR面试.在这里分享一下自己的面试经验和学习总结.希望能够帮助更多的小伙伴. 我本科毕业于中南大学信管专业,真正开始学习Java是在大三下学期,研究生就读北航的移动云计算专业. 刚开始也是小白,也是一步步成成起来的.需要提的一点是,你将来是需要靠这个吃饭的,所以请对找工作保持十二分的热情,而且越早准备越好. 阿里