标签:idt 性能 连表 技术分享 学习 线程 多个 博客 实现
今天又复习Java的集合类,相比之前的学习,又有了许多收获,而且时记到脑子里边了,或者是要坚持写博客的缘故把。
进入正题,首先是要搞清Collection和Collections,Collection是List,set和Queue接口的父接口,而Collections是一个操作集合的工具类。
集合体系知识如下:
首先说Set集合:Set集合类似于一个蜜罐,可以把多个对象丢进去,而Set不能够记住添加元素的顺序。Set集合与Collection基本相同,没有提供额外的方法,也可以说Set就是Collection。如果add()相同的元素,会返回flase,添加失败。
HashSet:HashSet按照Hash算法来存储结合中的元素,因此具有良好的存取和查找的性能。
LinkedHashSet:使用连表来维护元素,因为需要维护元素的插入顺序,所以性能略低,低于HashSet。
TreeSet:采用红黑树的数据结构来存储集合元素,并且支持两种排序方法,自然排序和定制排序。注意:使用TreeSet时,保证添加的对象全都实现了Comparable接口,否则会添加失败,并且抛出ClassCastExecption异常。简单一句话,如果想要TreeSet正常运行,只能添加同一种类型的对象。
EnumSet:为枚举类设计的集合类。内部以向量的形式存储,存储形式非常紧凑,所有Enumset在对象占用内存小,而且效率高。
各Set实现类性能分析:HashSet性能总是高于TreeSet,如果想要保持排序的set,采用TreeSet。LinkedHashSet对于普通的插入删除来说比HashSet略微慢一点,但是有了连表,遍历LinkedHashSet会更快,EnumSet是Set实现类中性能最好的,但是只能保存同一类型的元素。并且所有的set实现类都是线程不安全的。
参考资料:李刚大叔的《疯狂Java讲义》
标签:idt 性能 连表 技术分享 学习 线程 多个 博客 实现
原文地址:http://www.cnblogs.com/suiyue-/p/6052456.html