java集合大家族之总结

  1. Collection和Map都可以在你向其中添加更多的元素时,自动调整其尺寸。

  2. 容器不能持有基本类型,当你尝试向容器中加入一个基本类型时会自动包装。

  3. 如果要进行大量的随机访问,就是有ArrayList。如果要经常从表中间插入或删除元素,则应该使用LinkedList。

    对于ArrayList因为有数组支撑,所以无论列表的大小如何,访问元素的速度都是一致的。但是对于插入操作而言,如果插入大量的元素,就必须创建更大数组来存储这些元素。所以ArrayList插入操作代价特别高昂,并且其代价随列表尺寸的增加而增加。而对于LinkedList底层是链表支撑,访问元素的时间跟列表的大小成正比。如果需要执行大量的随机访问,就不要使用链接链表LinkedList。但是插入和移动操作的代价相当低廉,并且并不随列表的尺寸发生变化。

  4. Set不接受重复元素。HashSet提供最快的查询速度,而TreeSet保存元素始终处于排序状态。LinkedHashSet以插入顺序保存元素,但是也通过散列提供了快速访问能力。

    因为TreeSet内部需要维护排序,在插入和添加元素的时候HashSet的性能比TreeSet好。因为没有利用散列进行,在查询元素的时候,TreeSet的会比HashSet慢。但是迭代元素方面TreeSet会比HashSet好。因为LinkedHashMap需要维护内部链表,对于插入操作LinkeHashMap比HashSet的代价更高。但是迭代方法LinkeHashMap会比HashSet好。

  5. Map是一种将对象与对象相关联的设计。HashMap设计用来快速访问;而TreeMap保存“键”始终处于排序状态,所以没有HashMap快。LinkedHashMap保持元素插入的顺序,但是也通过散列提供了快速访问能力。

    几乎所有的Map插入操作都会随着Map尺寸的变大而明显变慢,但是查找的代价通常比插入要小得多。LinkedHashMap在插入时比HashMap慢一点,因为它维护散列数据结构的同时还要维护链表,以保持插入顺序。因为有这个链表迭代速度会比HashMap快。

  6. 新程序中不应该使用过时的Vector、HashTable、Stack、Enumeration。应该避免使用这些容器,它们只存在于支持遗留代码的类库中。在写新程序的时候,决不应该使用这些旧容器。Vector可以用ArrayList来代替。Enumeration可以用Iterator来代替。HashTable可以用HashMap来代替。Stack可以用ArrayDeque来代替。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值