惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
Martin Fowler
Martin Fowler
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
B
Blog
U
Unit 42
B
Blog RSS Feed
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
腾讯CDC
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
博客园 - 聂微东
MyScale Blog
MyScale Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
Engineering at Meta
Engineering at Meta

博客园 - Bryan Wong

Pushlets的初始化陷阱 在Tomcat部署Solr 4.3 Spring Security如何防止会话固定攻击(session fixation attack) Jdk自带的定时任务TimerTask和ScheduledExecutorService及其在Spring中的集成 Lucene索引,查询及高亮显示 记录几个Json的lib 蛋疼的腾讯微博数据类型和API文档 语言检测工具language-detection 你所不知道的Quartz特性 Spring Data集成MongoDB访问 Jetty的jar包依赖关系图 CAPS & BHCA 下载SUSE Linux 10 sp1的经历好曲折 C#代码检查工具:stylecop 圈复杂度基础 Scrum——“鸡”和“猪”的寓言 使用java断言调测程序 无所不能的final关键字 不同于C#的Java值类型和String类型
Java中的集合类图
Bryan Wong · 2011-12-13 · via 博客园 - Bryan Wong

Java的集合类关系图:

List:add/remove/get/set。

1,ArrayList:其实就是数组,容量一大,频繁增删就是噩梦,适合随机查找;

2,LinkedList:增加了push/[pop|remove|pull],好啰嗦,其实都是removeFirst;

3,Vector:历史遗留产物,同步版的ArrayList,名字起的奇奇怪怪,代码和ArrayList太像;

4,Stack:继承自Vector。Java里其实没有纯粹的Stack,自己实现一个吧,用组合的方式,封装一下LinkedList即可;

5,Queue:为什么归到这里呢?本来是单独的一类,不过在SUN的JDK里就是用LinkedList来提供这个功能的,主要方法是offer/pull/peek。

Set:add/remove。get和set呢?抱歉欠奉,可以用迭代器或者转换成list。

1,HashSet:没啥好说的,内部采用HashMap实现的;

2,LinkedHashSet:同上,采用LinkedHashMap实现;

3,TreeSet:TreeMap。

Map:put/get/remove。

1,HashMap/HashTable:散列表,啥都不说了,和ArrayList一样采用数组实现,超过初始容量会对性能有损耗;

2,LinkedHashMap:这个类有点意思,继承自HashMap,但通过重写嵌套类HashMap.Entry实现了链表结构,同样有容量的问题;

3,Properties:没错,这玩意是继承的HashTable。

顺便818坑爹的Arrays.asList,这个方法的实现依赖一个嵌套类,这个嵌套类竟然也叫ArrayList!太坑爹了。