編程隨筆-java編程知識收納-容器


  java中的容器使用是java程序員在編程開發中必不可少的技能,就算是剛入門的java程序員,也一定會用到ArrayList,Hashmap這樣的容器。在《java編程思想》提供了一張JDK中容器的知識圖譜,而自JDK1.5後也增加了不少新的容器 類。花了一點時間,把JDK中的容器類以導圖的形式描述出來,做爲一個以後工作的備查記錄。
  JDK中 的容器種類繁多,但常用的可能也就不到十種,讓我們做一個簡單的脈絡梳理。
  JDK中的容器源自兩個接口: Map和Collection。這兩個接口描述了自然世界中兩種典型的集合類型:Collection是普通對象的集合,而Map則 是名值對(特殊對象)的集合。由Collection接口衍生出了List和Set兩個接口,這裏我們可以簡單地認爲List是可以有重複元素的集合,而Set符合代理中的集合概念,是一個沒有重複元素的集合(JAVA中判斷兩個對象是否相同,可根據重寫的equals函數)。
  由List接口,可衍生出列表,堆棧,隊列三類容器對象。列表對象中常用的是ArrayList和LinkedList,在實現形式上應對 一維向量與雙向鏈表,由於 LinkedList是雙向鏈表,因而也可以作爲隊列使用,遍歷可使用listIterator從反向遍歷。堆棧可視爲一個LIFO的隊列,典型的實現類是Stack。隊列概念上是一個FIFO的隊列,在接口中有單向Queue和雙向Deque兩類接口,大家可以關注一下PriorityQueue(實現上爲一個完全搜索二叉樹)和DelayQueue這兩類比較特殊的隊列,在併發編程中常會用到。在隊列的實現類中還有一類名字中帶“Blocking”的隊列實現類,這類容器可在條件滿足時阻塞線程。
  由Set接口,衍生出的實現類中常用的爲HashSet和TreeSet,需要注意的是TreeSet是一個有序集合。
  由Map接口,衍生出的實現類有HashMap和HashTable。
  對於JDK中的容器,使用迭代器Iterator進行元素的遍歷是最常用的方法,而在使用時,設置一個初始容量(針對提供該特徵的某些容器)也非常有必要。在JDK1.5之後,java.util.concurrent 包中增加了一些線程安全的容器類(如ConcurrentHashMap),可實現基礎操作的原子性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章