java集合的总结

java集合类关系图如下图所示:

collection中包括了List和Set,map是另一个抽象类。
  • 如何遍历Collection中的每一个元素?
不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
    Iterator it = collection.iterator(); // 获得一个迭代子
    while(it.hasNext()) {
      Object obj = it.next(); // 得到下一个元素
    }
  • list接口
           实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
         LinkedeList:双向链表实现的,具有链表的优点。扩容容易。允许null元素。提供在头部尾部添加数据的方法,适合实现栈和队列。注意:不提供同步的方法,线程不安全。
         ArrayList:类似数组实现,可变大小的数组,具有数组的优缺点(访问快,修改慢;不易扩容)。允许null。非同步,线程不安全。
         Vector:向量,非常类似ArrayList,但是是线程安全的。
         Stack:继承自Vector,实现了一个后进先出的栈。
  • set接口
          不包含重复元素的接口
  • Map接口
          Map没有继承Collection接口,Map提供key到value的映射。 
          Hashtable:Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。添加数据和取出数据的时间为常数。Hashtable通过initial capacity和load factor两个参数调整性能。通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。load factor--负载容量。hashtable是同步的,线程安全的。
         HashMap:HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。
         WeakHashMap:一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。
         TreeMap: 使用红黑树的排序二叉树来保存Map中的每个Entry。每个Entry为红黑树的一个节点。所有的Entry总是根据key按指定的规则保持有序。
 
 
 
 
 
posted @ 2014-04-13 17:39  EchoLee  阅读(133)  评论(0编辑  收藏  举报