HashSet,锋芒毕露,我们最常用到。其他两个,我们较少用到,今天,我们看看他们的区别。

import java.util.HashSet;
import java.util.Set; public class HashSetTester { public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>(); set.add(15);
set.add(31);
set.add(12);
set.add(123);
set.add(42); for (Integer i : set) {
System.out.println(i);
}
} }

HashSet,能够快速查找键值。

看它的实现可知,依赖于HashMap的实现。打印的日志:

42
123
12
31
15

如果修改为使用TreeSet,日志是这样的。

TreeSet底层维护的是一个红黑树,维护有序的序列,元素必须实现Comparable接口。

12
15
31
42
123

而使用LinkedTreeSet,日志又是这样的。

保持插入的次序,又支持快速查找键值。

LinkedTreeSet是继承TreeSet构造方法,而TreeSet的构造方法里使用了LinkedHashMap,可见原理隐藏在LinkedHashMap里面。

15
31
12
123
42

最新文章

  1. 在VMware中安装ubuntu出现菜单栏无法显示的情况
  2. MVC中的@符号
  3. September 23rd 2016 Week 39th Friday
  4. Magicodes.WeiChat——后台JS框架封装
  5. java版复利计算器升级
  6. UVa 12325 Zombie&#39;s Treasure Chest【暴力】
  7. ios开发--网页中调用JS与JS注入
  8. 修改Linux中的用户名
  9. [工作问题总结]MyEclipse 注册
  10. 路由页面缓存开启 以及 keep-alive 给你埋下的坑
  11. Google 怎么搜索
  12. Example005控制弹出窗口居中显示
  13. android新建项目
  14. 聊聊Docker
  15. C# 当前 .NET SDK 不支持将 .NET Core 2.1 设置为目标。请将 .NET Core 2.0 或更低版本设置为目标,或使用支持 .NET Core 2.1 的 .NET SDK 版本。
  16. qt 拖拽 修改大小(二)
  17. iOS代码块block使用
  18. QSS独门秘籍:subcontrol
  19. 31.网站数据监控-2(scrapy文件下载)
  20. [转]PHP与Shell交互

热门文章

  1. 封装page分页类
  2. BZOJ K大数查询(分治)(Zjoi2013)
  3. paper 1:图像特征提取
  4. 一天弹出一次广告cookie
  5. 《Focus On 3D Terrain Programming》中一段代码的注释一
  6. Eclipse帮助文档配置
  7. Javascript Window Location
  8. Shipyard远程API
  9. Linux下命令行安装WebLogic 10.3.6
  10. 【PHP设计模式 05_DanLi.php】单例模式