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一定无序。

最新文章

  1. ZOJ Problem Set - 1365 Mileage Bank
  2. Ajax实现简单下拉选项
  3. js 之 continue break return 用法及注意事项
  4. bzoj-2748 2748: [HAOI2012]音量调节(dp)
  5. poj 1517 u Calculate e
  6. css写圆角效果
  7. Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区
  8. PHPExcell单元格中某些时间格式的内容不能正确获得的处理办法
  9. AngularJS自定义表单验证器
  10. exe可执行程序及堆栈分配(转载)
  11. 【Android开发经验】LayoutInflater—— 你可能对它并不了解甚至错误使用
  12. MAC中使用Vim和GCC编译C程序
  13. redhat在线安装chrome浏览器
  14. 基于 HTML5 WebGL 的 3D 服务器与客户端的通信
  15. 使用bat将优盘中的dig加到系统环境变量
  16. MVC设计模式思想及简单实现
  17. restful设计规范
  18. sourceTree 代码冲突解决
  19. [spoj Favorite Dice ][期望dp]
  20. Confluence 6 升级自定义的站点和空间仔细测试你的修改

热门文章

  1. django查询中模糊的知识点,filter(blog=blog),filter(username=username).first()--这两者只需一招让你分清QuerySet对象,和用户字典对象
  2. Django聚合查询 orm字段及属性
  3. Winform修改配置文件节点保存到配置文件
  4. 《Java知识应用》Java发送邮件(QQ,163)
  5. 第三次作业-Python网络爬虫与信息提取
  6. Activiti架构分析及源码详解
  7. 【CV现状-2】三维感知
  8. Mysql被黑客入侵及安全措施总结
  9. Shell—详解$( )、$(( ))、``与${ }的区别
  10. QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAllocEx failed.(遇到还没试过)