java集合简析

来源:互联网 发布:伤感网络红歌大全 编辑:程序博客网 时间:2024/06/05 05:35

基本关系

  • Collection
           --List
           ------ ArrayList
------ LinkedList
  ------Vector
  ------Stack
           ------------Set

  • Map
           --HashMap
           --HashTable
           --WeakHashMap


分析

Collction
    List和Set同样继承Collection类。List是顺序表,根据下标访问,允许出现相同的值;Set不允许相同的值出现,常用来去除相同值的操作。

List:
    ArrayList用数组储存,非同步,效率较高。常用于需要经常按下标查找的情况。在元素数目超过目前数组长度时,自动增长50%。
    LinkedList使用链表结构存储数据,因此在插入删除操作中性能表现好,非同步,效率较高。常用于需要经常插入删除的情况下。
    Vector和ArrayList都是数组结构的,但Vector是同步的,与此同时,Vector也损失了一部分效率。Vector在多个线程同时修改时,会抛出ConcurrentModificationException异常
    Stack继承Vector,实现了一个先进后出的堆栈。Stack刚创建时是个空栈。
Set:
    Set不能传入相同的值,通常用于去除目录里重复的值。

Map
    Map提供key到value的映射。通常使用是通过key来获取到value的值,因此一个Map中不能出现相同的key,每个key也只能映射一个value。
    HashMap,非同步的,允许key或者value出现null。迭代子操作时间开销和HashMap的容量成正比。
    HashTable,同步的,key和value都不能出现空值。查找时间是常数。通过initial capacity和load factor调整性能。
    WeakHashMap,改进的HashMap,使用弱引用,也就是当key不在被外部引用时,该key可以被回收。

同步的:Vector,HashTable
非同步的: ArrayList,LinkedList,HashMap,WeakHashMap
注:Collections类可以提供以上几个类的同步解决方法,提供的同步方法多于自带同步的那两种。













0 0
原创粉丝点击