• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Java集合框架

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    Java 提供了數種持有對象的方式,包括語言內置的Array,還有就是utilities中提供的容器類(container classes),又稱群集類(collection classes)。集合在 java 中非常重要,在討論之前,先來看幾個面試中的經典問題。 1 Collection 和 Collections的區別。 2
    Java提供了數種持有對象的方式,包括語言內置的Array,還有就是utilities中提供的容器類(container classes),又稱群集類(collection classes)。集合在java中非常重要,在討論之前,先來看幾個面試中的經典問題。
    1 Collection 和 Collections的區別。
    2 List, Set, Map是否繼承自Collection接口。
    3 ArrayList和Vector的區別。
    4 HashMap和Hashtable的區別。
    篇尾有答案,我們開始正題。

    集合Collection接口
    --Collection 是任何對象組,元素各自獨立,通常擁有相同的套用規則。Set List由它派生。
    基本操作 增加元素add(Object obj); addAll(Collection c);
    刪除元素 remove(Object obj); removeAll(Collection c);
    求交集 retainAll(Collection c);

    訪問/遍歷集合元素的好辦法是使用Iterator接口(迭代器用于取代Enumeration)
    Public interface Iterator{
    Public Boolean hasNext(0;
    Public Object next(0;
    Public void remove(0;
    }

    集set
    --沒有重復項目的集合
    有三種特定類型的集可用
    HashSet-基于散列表的集,加進散列表的元素要實現hashCode()方法
    LinkedHashSet-對集迭代時,按增加順序返回元素
    TreeSet-基于(平衡)樹的數據結構

    清單List
    --位置性集合。加進清單的元素可以加在清單中特定位置或加到末尾
    有兩個特定版本
    ArrayList(數組表)-類似于Vector,都用于縮放數組維護集合。區別:
    一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
    二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半
    LinkedList(鏈表)-是雙向鏈表,每個節點都有兩個指針指向上一節點和下一節點。
    用在FIFO,用addList()加入元素 removeFirst()刪除元素
    用在FILO,用addFirst()/removeLast()
    ListIterator提供雙向遍歷next() previous(),可刪除、替換、增加元素

    映射表Map
    --用于關鍵字/數值對,像個Dictionary
    處理Map的三種集合
    關鍵字集KeySet()
    數值集value()
    項目集enrySet()
    四個具體版本
    HashMap-散列表的通用映射表
    LinkedHashMap-擴展HashMap,對返回集合迭代時,維護插入順序
    WeakHashMap-基于弱引用散列表的映射表,如果不保持映射表外的關鍵字的引用,則內存回收程序會回收它
    TreeMap-基于平衡樹的映射表

    Collections類,用于同步集合,還能改變集合只讀方式的類
    e.g.:
    Map mp=new HashMap()
    mp=Collections.synchronizedMap(mp); //生成線程安全的映射表
    mp=Collections.unmodifiableMap(mp); //生成只讀映射表

    Comparable 自然順序的排序類 Comparator 面向樹的集合排序類

    容器分類學(Container taxonomy)
    集合接口: Collection List Set;Map Iterator ListIterator。
    抽象類: AbstractCollection AbstractList AbstractSet AbstractMap AbstractSequentiaList。
    Implementations
    Hash TableResizable ArrayBalanced TreeLinked List
    InterfacesSetHashSetTreeSet
    ListArrayListLinkedList
    MapHashMapTreeMap



    老版本中的集合類型
    Vector類
    Vector,就是向量。一種異構的混合體,可以動態增加容量。對它的操作簡要如下
    比如我們有一個Vector: Vector myVec=new Vector(a_Array.length)
    取得vector的長度:myVec.size();
    賦值:set(int position,Object obj) / setElementAt(Object obj, int position) –不支持動態增長
    add(Object obj )/ addElement(Object obj) 在Vector末尾加入對象
    e.g.:myVec.add(new a_Array[0]);
    取出元素:get(int position) / getElement(int position)

    Stack類
    是Vector的子類。就是數據結構里講濫了的堆棧(這個詞可簡稱棧,不要混淆于heap-堆)。后進先出的存取方式。
    Stack()構造空棧
    Empty()叛空
    Search()檢查堆棧是否有元素
    Peek()取得棧頂元素
    Pop()彈棧
    Push()入棧

    Enumeration接口

    Dictionary類
    字典。關鍵字/數值方式存取數據,如果映射沒有此關鍵字,取回null。

    Hashtable類
    是Dictionary結構的具體實現。

    面試題答案
    Collection 和 Collections的區別。
    Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
    Collection是個java.util下的接口,它是各種集合結構的父接口。
    List, Set, Map是否繼承自Collection接口? List,Set是 Map不是
    ArrayList和Vector的區別。
    一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
    二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半
    HashMap和Hashtable的區別
    一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現
    二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
    三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>