集合简单总结

来源:互联网 发布:js文件上传原理 编辑:程序博客网 时间:2024/06/01 12:54
所有集合能容纳的仅有对象句柄,不可以存储基本数据类型

缺点:类型未知

集合不适用下述场合:
(1) 将一个对象句柄置入集合时,由于类型信息会被抛弃,所以任何类型的对象都可进入我们的集合——即
便特别指示它只能容纳特定类型的对象。举个例子来说,虽然指示它只能容纳猫,但事实上任何人都可以把
一条狗扔进来。
(2) 由于类型信息不复存在,所以集合能肯定的唯一事情就是自己容纳的是指向一个对象的句柄。正式使用
它之前,必须对其进行造型,使其具有正确的类型。

List:
时间对比:
Type
Get 
Iteration 
Insert 
Remove 
ArrayList 
110 
490  
3790 
8730 
LinkedList 
1980 
220  
110  
110
ArrayList:
  底层数据结构是数组,查询快,增删慢。
  线程不安全,效率高。
 Vector:
  底层数据结构是数组,查询快,增删慢。
  线程安全,效率低。
 LinkedList:
  底层数据结构是链表,查询慢,增删快。
  线程不安全,效率高。
我们最好的做法也许是先选择一个ArrayList 作为自己的默认起点。以后若发现由于大量的插入和删除
造成了性能的降低,再考虑换成LinkedList 不迟。list有个特有的迭代器(ListIterator

Set:
时间对比:
Type  
Test size 
Add 
Contains 
Iteration 
TreeSet 
100  
 22.5
13.2
12.1 

1000  
31.1
18.7
 11.8 
HashSet 
100  
6.6
6.6
10.9 

1000  
7.4 
6.6
9.5
set底层使用哈希表实现的

进行add()以及contains()操作时,HashSet显然要比 TreeSet 出色得多,而且性能明显与元素的多寡关系
不大。一般编写程序的时候,几乎永远用不着使用 TreeSet 

Map:
当我们使用 Map时,首要的选择应该是 HashMap。

TreeMap的创建速度比其他两种类型明显快得多,TreeMap出色的 put()性能,所以如
果需要创建大量Map,而且只有在以后才需要涉及大量检索操作,那么最佳的策略就是:创建和填充
TreeMap;以后检索量增大的时候,再将重要的TreeMap 转换成HashMap

0 0