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