<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks

    Java提供了數(shù)種持有對(duì)象的方式,包括語言內(nèi)置的Array,還有就是utilities中提供的容器類(container classes),又稱群集類(collection classes)。集合在java中非常重要,在討論之前,先來看幾個(gè)面試中的經(jīng)典問題。
    1 Collection
    Collections的區(qū)別。
    2 List, Set, Map
    是否繼承自Collection接口。
    3 ArrayList
    Vector的區(qū)別。
    4 HashMap
    Hashtable的區(qū)別。
    篇尾有答案,我們開始正題。

    集合Collection接口
    --Collection
    是任何對(duì)象組,元素各自獨(dú)立,通常擁有相同的套用規(guī)則。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
    --
    沒有重復(fù)項(xiàng)目的集合
    有三種特定類型的集可用
    HashSet-
    基于散列表的集,加進(jìn)散列表的元素要實(shí)現(xiàn)hashCode()方法
    LinkedHashSet-
    對(duì)集迭代時(shí),按增加順序返回元素
    TreeSet-
    基于(平衡)樹的數(shù)據(jù)結(jié)構(gòu)

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

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

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

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

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

     

    老版本中的集合類型
    Vector

    Vector
    ,就是向量。一種異構(gòu)的混合體,可以動(dòng)態(tài)增加容量。對(duì)它的操作簡(jiǎn)要如下
    比如我們有一個(gè)Vector: Vector myVec=new Vector(a_Array.length)
    取得vector的長(zhǎng)度:myVec.size();
    賦值:set(int position,Object obj) / setElementAt(Object obj, int position) –不支持動(dòng)態(tài)增長(zhǎng)
          add(Object obj )/ addElement(Object obj)
    Vector末尾加入對(duì)象
    e.g.
    myVec.add(new a_Array[0]);
    取出元素:get(int position) / getElement(int position)

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

    Enumeration接口

    Dictionary
    字典。關(guān)鍵字/數(shù)值方式存取數(shù)據(jù),如果映射沒有此關(guān)鍵字,取回null

    Hashtable
    Dictionary結(jié)構(gòu)的具體實(shí)現(xiàn)。

    面試題答案
    Collection
    Collections的區(qū)別。
    Collections
    是個(gè)java.util下的類,它包含有各種有關(guān)集合操作的靜態(tài)方法。
    Collection
    是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。
    List, Set, Map
    是否繼承自Collection接口? ListSet  Map不是
    ArrayList
    Vector的區(qū)別。
    .同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
    .數(shù)據(jù)增長(zhǎng):當(dāng)需要增長(zhǎng)時(shí),Vector默認(rèn)增長(zhǎng)為原來一培,而ArrayList卻是原來的一半
    HashMap
    Hashtable的區(qū)別
    .歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMapJava 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)
    .同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
    .值:只有HashMap可以讓你將空值作為一個(gè)表的條目的keyvalue

    posted on 2007-11-24 15:06 禮物 閱讀(219) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。

    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久久青草青青国产亚洲免观| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲成人免费在线观看| 香港a毛片免费观看| 99亚洲精品高清一二区| 久久ww精品w免费人成| 亚洲综合视频在线| 四虎在线视频免费观看视频| 亚洲成a人片在线网站| 大地资源在线观看免费高清| 亚洲人成色在线观看| 国产乱色精品成人免费视频| 久久亚洲精品无码网站| 亚洲国产成人久久综合一区77| 国产福利在线观看永久免费| 亚洲AV永久无码精品一百度影院| 午夜影院免费观看| 亚洲AV成人一区二区三区在线看| 免费黄网在线观看| 国产无限免费观看黄网站| 亚洲国产一区二区三区青草影视 | 亚洲日韩中文字幕| 成年人在线免费观看| 青青草97国产精品免费观看| 免费真实播放国产乱子伦| 国产成人精品免费视频大全| 亚洲国产综合91精品麻豆| 久久久久av无码免费网| 久久亚洲精品高潮综合色a片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲区不卡顿区在线观看| 国产永久免费高清在线| 亚洲丰满熟女一区二区v| 国产精品视频免费一区二区三区| 巨胸喷奶水www永久免费| 亚洲国产模特在线播放| 一本久到久久亚洲综合| 最近新韩国日本免费观看| 国产AV无码专区亚洲AV麻豆丫| 最新国产AV无码专区亚洲| 美女视频黄免费亚洲|