集合框架示意图

转自http://blog.csdn.net/qq_27918787/article/details/52583948


[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. 如何选择?  
  2. 1、容器类和Array的区别、择取  
  3. * 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。  
  4. * 一旦将对象置入容器内,便损失了该对象的型别信息。  
  5. 2、  
  6. * 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();  
  7. Vector总是比ArrayList慢,所以要尽量避免使用。  
  8. * 在各种Sets中,HashSet通常优于TreeSet(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。  
  9. TreeSet存在的唯一理由:能够维护其内元素的排序状态。  
  10. * 在各种Maps中  
  11. HashMap用于快速查找。  
  12. * 当元素个数固定,用Array,因为Array效率是最高的。  
  13. 结论:最常用的是ArrayList,HashSet,HashMap,Array。而且,我们也会发现一个规律,用TreeXXX都是排序的。  
  14.    
  15. 注意:  
  16. 1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。  
  17. 2、Set和Collection拥有一模一样的接口。  
  18. 3、List,可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get)  
  19. 4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue。  
  20. 5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。  
  21. HashMap会利用对象的hashCode来快速找到key。  
  22. * hashing  
  23. 哈希码就是将对象的信息经过一些转变形成一个独一无二的int值,这个值存储在一个array中。  
  24. 我们都知道所有存储结构中,array查找速度是最快的。所以,可以加速查找。  
  25.    
  26. 发生碰撞时,让array指向多个values。即,数组每个位置上又生成一个梿表。  
  27. 6、Map中元素,可以将key序列、value序列单独抽取出来。  
  28. 使用keySet()抽取key序列,将map中的所有keys生成一个Set。  
  29. 使用values()抽取value序列,将map中的所有values生成一个Collection。  
  30. 为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复。  
[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1.   
[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <p>*<strong>List,Set,Map将持有对象一律视为Object型别。</strong></p><p>*Collection、List、Set、Map都是接口,不能实例化。</p><p>继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。</p><p>*vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。</p>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值