阿里面试实战题1----TreeSet,HashSet 区别
2024-08-31 17:40:28
TreeSet,HashSet 区别
TreeSet
public class TreeSet<E> extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, java.io.Serializable
{
public TreeSet() {
this(new TreeMap<E,Object>());
}
}
可以从代码中明显看出。TreeSet的底层其实是TreeMap。
而TreeMap是一个有序的key-value集合,它是通过红黑树实现的。
TreeMap基于红黑树(Red-Black tree)实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparable 进行排序(实现其compareTo进行排序),具体取决于使用的构造方法。
TreeMap可以详细看这篇 TreeMap 还能排序?分析下源码就明白了
HashSet
public HashSet() {
map = new HashMap<>();
}
很明显,底层是HashMap实现。具体看这篇文章。基于JDK1.8的HashMap分析
TreeSet,HashSet 区别
- TreeSet底层是TreeMap,HashSet底层是HashMap
- TreeSet增加查找删除是O(lgn)。HashSet增加查找删除是O(1),最坏情况是O(n)
- TreeSet底层TreeMap可以有序,HashSet底层HashMap一定无序。
最新文章
- ZOJ Problem Set - 1365 Mileage Bank
- Ajax实现简单下拉选项
- js 之 continue break return 用法及注意事项
- bzoj-2748 2748: [HAOI2012]音量调节(dp)
- poj 1517 u Calculate e
- css写圆角效果
- Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区
- PHPExcell单元格中某些时间格式的内容不能正确获得的处理办法
- AngularJS自定义表单验证器
- exe可执行程序及堆栈分配(转载)
- 【Android开发经验】LayoutInflater—— 你可能对它并不了解甚至错误使用
- MAC中使用Vim和GCC编译C程序
- redhat在线安装chrome浏览器
- 基于 HTML5 WebGL 的 3D 服务器与客户端的通信
- 使用bat将优盘中的dig加到系统环境变量
- MVC设计模式思想及简单实现
- restful设计规范
- sourceTree 代码冲突解决
- [spoj Favorite Dice ][期望dp]
- Confluence 6 升级自定义的站点和空间仔细测试你的修改
热门文章
- django查询中模糊的知识点,filter(blog=blog),filter(username=username).first()--这两者只需一招让你分清QuerySet对象,和用户字典对象
- Django聚合查询 orm字段及属性
- Winform修改配置文件节点保存到配置文件
- 《Java知识应用》Java发送邮件(QQ,163)
- 第三次作业-Python网络爬虫与信息提取
- Activiti架构分析及源码详解
- 【CV现状-2】三维感知
- Mysql被黑客入侵及安全措施总结
- Shell—详解$( )、$(( ))、``与${ }的区别
- QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAllocEx failed.(遇到还没试过)