亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java----介紹三個集合容器庫

2019-11-18 13:12:43
字體:
來源:轉載
供稿:網友

  自java 2 Patform 誕生以來,Java Coections Framework 一直是Java核心類庫的標準組成部分。如今,會發現起了些變化,我們有了其它的選擇,譬如Jakarta Commons Coections 和 Recursion Software 公司最新的Java Generic ibrary (JG)。它們打破了Java Coections Framework 的壟斷。(November 1, 2002)
  
  在 Java 誕生之初,Java核心類庫僅支持幾種數據結構,包括數組(arrays)、向量(vectors) 和 hash tabes(鍵-值對)。而不支持另一些重要的數據結構,比如,平衡數(baanced trees)、原始對象袋(generic bags of objects)和優先隊列(PRiority queues),但是這些你都可以自己來構建。因而,有一些開發者在類庫中加入了他們自己的數據結構。
  
  在這篇文章中,我們將回顧一些開發者早期的嘗試,他們是如何發展Sun公司的Java Coections Framework的版本,以及該框架早期的進展和在參照了用戶需求之后對一些數據結構的支持。
  
  Java Coections Frameworks 的歷史
  首先,讓我們回顧一下初期的數據結構集合,服務于紐約州立大學(在美國的Oswego)的Doug ea,他大概是創立了第一個被廣泛應用的集合(coection)。該集合在1995年秋被發布。
  
  那時候,一些早期的Java的開發者是由C++轉變而來。他們用Standard Tempate ibrary (ST) 進行開發,創立了Java 核心類庫,而該類庫極其缺乏對算法和數據結構的支持。 一家來自C++和ST世界的公司(ObjectSpace)決定將ST接入Java。于是Java Generic ibrary (JG) 在1996年發布,但是Sun并不喜歡這個名字。ObjectSpace公司因此將其改名為Generic Coection ibrary for Java,但仍然使用JG這一縮寫。
  JG流行一時。通過營銷,ObjectSpace公司使10個IDE(集成開發環境)工具提供商集成了該類庫。ObjectSpace宣稱它的基本用戶已超過十萬人。(而那時候Java開發者還遠不及七位數。)事實上JG在Java早期成了一種標準。在幾次修訂之后,加了一個包并且與ObjectSpace的Voyager Object Request Broker (ORB) 集成,在1997年秋JG 3.1版發布。
  
  隨著J2SE 1.2的到來,以及它對數據結構支持的變化,Doug ea 放棄了他的 coections包,開始使用公用類的第二個類庫開發。該新包提高了對數據的同步和多線程訪問。在1998年7月發布的“uti.concurrent”類就提供了對鎖閉(ocking)、池連(pooing)和同步(concurrent)的支持。
  
  Java Coections Framework
  J2SE 1.2 是在1998年12月發布的,它包括了一組稱為Java Coections Framework 的類,用來操作數據集合。對比JG和 Coections Framework,它們有不同的目的JG是ST的替代品,而Java Coections Framework則不是。以前的C++開發者傾向于使用JG,那是因為JG需要進行深入地學習,而這對于已經熟悉ST的人更為自然。JG大約有130個類和接口,而Coections Framework約是這個的百分之二十。
  
  另外一個選擇是Jakarta Commons Coections組件,于2001年7月發布,它用特制的數據類型和新方法擴展了J2SE 1.2 的APIS測試了集合論。在增添了一些類和接口的基礎上,Coections Framework 和 J2SE 1.4版沒有什么變化。對原型(如,模板),JSR14組織曾經辯論過,不過沒有加入到J2SE 1.4。JSR 14 發布了一個原型,但僅在開發團體內部受到支持。
  JSR 166 組織于去年1月出爐,由Doug ea 領導。該組織極力將先前提及uti.concurrent 類庫中的諸多高水平概念并入到Java 核心類庫中。
  itte 從ObjectSpace公司的親屬那得知,在J2SE 1.4版發布前一天一個叫Recursion Software 的公司宣稱取得了JG版權。后來,在2002年7月,Recursion Software 公司發布了JG 4.0版,并將JG集合和算法與標準的Coections Framework集成。
  到了今天,我們可用的類庫有:
  Coections Framework,它是Java 核心類庫的一部分,且定義了對所有數據結構實現的接口。
  Jakarta Commons Coections組件,可以在Apache軟件協議下自由取得。
  JG 4.0
  對Generic-types支持,作為原型對JSR 14 可用
  兩個非標準的類庫(來自Doug ea),由JSR 166 正在發展成標準。
  
  讓我們來看看這些類庫,考慮一下何時可能會使用它們。
  The Coections Framework
  Coection Framework 它提供了一套核心接口,共六個:Coection, Set, ist, SortedSet, Map, 和 SortedMap.
  Coection 是sets和ists的基本接口。它描述了一組沒有非凡特征的元素。對Coection沒有直接的實現,僅有子接口的實現。
  Set是一個由一些項組成的集合,這些項不容許出現重復。HashSet 和 TreeSet 是兩個Set 的標準實現;TreeSet 是經過分類的,它實現了SortedSet。
  ist接口是一個經排序的集合,提供了索引或順序存取。ist的實現包括Arrayist和inkedist;Arrayist替代了原來的Vector類。
  Map描述了‘鍵-值’格式的集合,類似于Hashtabe。可用的maps映射有HashMap和TreeMap;TreeMap是經過分類的,它實現了SortedMap。J2SE 1.4 引入兩個新的實現:inkedHashSet和inkedHashMap,它們內部自動維護了在增添、搜索和刪除操作后的元素順序。J2SE 1.4 中另一個實現是IdentityHashMap,它用“==”代替了“equas()”來進行等比較。對于在weak reference 感愛好的人來說,還有一個映射——WeakHashMap,它可以把WeakReference用作鍵(keys),因而,假如是通過鍵作為值(vaue)的唯一引用,將會丟棄該鍵-值對。
  在設計之初,基本框架是非線程安全的。多線程的同步訪問安全性需要用一個線程安全的外覆器(wrapper)來達到。這樣的一種外覆器在集合框架中有一個只讀的類似版本。
  然而,這一框架比較小,不意味著對所有數據結構提供支持。相反,你僅僅可以通過它創建一些非凡的實現。
  
  The Jakarta Commons Coections 組件
  一些特定實現已被很好地定義與解釋,可他們卻不是核心集合框架(core Coections Framework)的一部分。其中的一些實現可能被包含在了同步公用類庫里,隨后我們將更為細致的討論。
  Jakarta Commons Coections 組件是這套特定實現的一個示例。被設計用來與J2SE 1.2 協作的Commons Coections 組件,它提供了兩個ist實現和八個Map實現。新的基本結構也是可用的而且非常有趣。
  讓我們來看一看這一組特制實現。
  最易理解的是FastArrayist, FastHashMap, 和 FastTreeMap。它們分別繼續了標準的Arrayist、HashMap、和TreeMap,且都提供了在多線程下安全的同步讀寫訪問。然而,安全性是需要成本的,這樣便降低了寫操作的速度。當讀操作是非同步時,寫操作在現存結構被替代時是在一份數據備份上進行地。
  Bag就象是Set,但可以重復。另外它還有兩個實現:HashBag和TreeBag;后者是經排序地。
  另一個新的接口是PriorityQueue。它支持可比較項和使用比較器(Comparator),所以這些項可以BinaryHeap(基于優先級的)來維護,而且隨后可從該堆中刪除。
  剩下的就是一組特定的Map實現。它們提供了非凡目標(specia-purpose)、鍵-值(key-vaue)來查找映射(maps)。
  BeanMap運用反射提供了鍵值對(基于JavaBean屬性);該鍵是屬性名,該值是這一屬性名的值。
  ExtendedProperties繼續了java.uti.Properties;它為單一屬性連接了多個值,而非覆寫它。
  RUMap是一個可維護最大容量的Map,而且使用了至少一個運算法則來定義在這一Map已滿時要移去的節點。
  MutiHashMap有點象WeakHashMap,但它用的是SoftReference而非WeakReference。
  DoubeOrderedMap的重點在于串。它提供了一個Map來支持快速搜索(通過值和鍵)。但有這樣一個要求:鍵和值必須都是唯一的。當然你用兩個TreeMap對象也可以做到,但DoubeOrderedMap對每一個鍵值對僅保存一次。
  
  其它更多的類和接口則更多的支持角色,但仍有一些非凡的方法可用。除了象isSubCoection和合并等一些公用方法外,該框架還包括了附加的Comparators和Iterators。Comparators大部分是用來連鎖或替換另一個Comparator的行為。比如說,java.uti.Coections.reverSEOrder()可以顛倒元素的原順序,而ReverseComparator通過一個比較器(Comparator)來顛倒順序。Iterators是在取出元素之前將每個Coection元素通過一個函數(或方法)的作用。這是JG和ST共享的方法。
  
  JG 4.0
  自1997年以來,JG就沒有任何的更新,所以它的新版本使我很驚奇。我以為JG已沒有了任何目的。顯然,Recursion Software賦予了它其它的目的。該公司公布其基本用戶已超過25萬人,可是我并沒有聽說有誰在使用它。這一新版本與先前3.1版主要有三個不同之初:
  所有的類與接口都集成到了Coections Framework中,且同該框架一樣,默認非同步訪問。
  包的名稱由com.objectspace.jg改成了com.recursionsw.jg。
  Voyager-reated已被廢止。
  假如你對JG還不是很熟悉的話,請參閱JavaWord網站的文章。然而,新版沒有太大的變化,類庫僅能與J2SE 1.3.1和1.4協作。你可以將Coection Framework同JG混用。JG還提供了獨立的抽象數據類型和法則。它支持50種預運算法則,而Coection Framework有18種。我明白為什么有人要學習兩個不同的框架,但是一個好處就是使用JG的人可以將他們的應用程序部分的轉移到Coections Framework中,而非所有。JG對于原是C++的java開發者比起Coections Framework要更熟悉,但是由于JG現在是該框架的一部分,這并不要緊。
  
  Generic types
  最早計劃要對核心集合框架的修改是去支持參數化的數據類型,又稱為原型(generics),或者是模板(tempates)?,F在所有的集合都不是型別安全的(type-safe)。你可以將任一個對象加到集合中,而且,在取出一個元素是,

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产中文字幕日韩| 亚洲香蕉成视频在线观看| 91网站免费看| 欧美黑人性生活视频| 在线播放日韩精品| 国产免费一区二区三区在线观看| 精品伊人久久97| 高清欧美电影在线| 亚洲国产精品女人久久久| 亚洲欧美视频在线| 国产一区二区三区在线免费观看| 精品爽片免费看久久| 最近免费中文字幕视频2019| 国产精品爽黄69天堂a| 国产一区二区av| 成人激情在线播放| 亚洲一区中文字幕在线观看| 亚洲精品第一页| 中文国产成人精品| 另类天堂视频在线观看| 久久精品国产欧美激情| 欧美超级免费视 在线| 中文字幕欧美视频在线| 国产美女搞久久| 亚洲国产天堂网精品网站| 精品国产美女在线| 欧美综合国产精品久久丁香| 欧美性猛交xxxx久久久| 亚洲欧美另类人妖| 精品久久久久久中文字幕大豆网| 亚洲sss综合天堂久久| 久久综合免费视频影院| 国产精品男人爽免费视频1| 最近的2019中文字幕免费一页| 欧美激情一区二区久久久| 国产精品一区二区女厕厕| 91在线观看欧美日韩| 亚洲女人天堂成人av在线| 中文字幕精品影院| 日韩欧美国产骚| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲一区亚洲二区亚洲三区| 国产在线观看一区二区三区| 国产精品久久久久aaaa九色| 久久久久久这里只有精品| 中文字幕日韩欧美在线视频| 精品久久久免费| 性欧美办公室18xxxxhd| 精品国产精品自拍| 国模gogo一区二区大胆私拍| 色噜噜亚洲精品中文字幕| 国产成人精品国内自产拍免费看| 亚洲福利精品在线| 久久精品国产免费观看| 国产精品亚洲美女av网站| 国产日韩在线一区| 91精品视频大全| 亚洲精品av在线播放| 国产精品欧美久久久| 久久青草精品视频免费观看| 萌白酱国产一区二区| 欧美亚洲成人精品| 欧美性感美女h网站在线观看免费| 亚洲免费电影在线观看| 精品偷拍各种wc美女嘘嘘| 亚洲精品美女免费| 亚洲午夜未删减在线观看| 国产精品久久久久久久久免费| 中文字幕自拍vr一区二区三区| 成人精品视频久久久久| 久久久久久久影视| 国产日韩av在线| 成人免费视频97| 亚洲色图35p| 国产日韩欧美日韩大片| 欧美午夜片在线免费观看| 日韩在线视频播放| 日韩久久精品成人| 欧美日韩国产中文精品字幕自在自线| 国产精品中文字幕在线| 国产精品va在线播放我和闺蜜| 日本国产一区二区三区| 欧洲日韩成人av| 日韩毛片在线看| 91成人性视频| 97av在线播放| 日韩av网址在线| 国产91精品黑色丝袜高跟鞋| 亚洲国产精品电影| 亚洲福利视频网| 啊v视频在线一区二区三区| 亚洲欧美日韩爽爽影院| 日韩极品精品视频免费观看| 亚洲影视中文字幕| 日韩av电影在线免费播放| 成人免费在线视频网站| 成人黄色免费网站在线观看| www.精品av.com| 久久久久久国产精品久久| 色yeye香蕉凹凸一区二区av| 国产亚洲欧美一区| 日本最新高清不卡中文字幕| 日韩免费在线播放| 国产女人精品视频| 欧美亚洲激情在线| 国产美女91呻吟求| 91深夜福利视频| 亚洲欧美制服第一页| 亚洲第一精品电影| 成人免费网站在线观看| 亚洲精品欧美极品| 国产午夜精品美女视频明星a级| 久久免费精品视频| 91爱爱小视频k| 青青草国产精品一区二区| 伊人精品在线观看| 欧美精品xxx| 久久伊人91精品综合网站| 国产噜噜噜噜噜久久久久久久久| 国产欧美精品一区二区三区-老狼| 欧美精品国产精品日韩精品| 欧美亚州一区二区三区| 日韩一级裸体免费视频| 亚洲最大激情中文字幕| 成人黄色免费网站在线观看| 日韩成人av在线| 色综合亚洲精品激情狠狠| 国产剧情久久久久久| 久久男人av资源网站| 18一19gay欧美视频网站| 国产欧美精品xxxx另类| 国产精品27p| 亚洲午夜精品久久久久久久久久久久| 国产欧美一区二区三区久久人妖| 日韩在线观看免费av| 国产成人精品国内自产拍免费看| 亚洲精品国产精品国自产在线| 国内精品400部情侣激情| 欧洲成人在线视频| 久久夜色精品国产亚洲aⅴ| 欧美亚洲成人免费| 欧美在线影院在线视频| 亚洲欧美日韩在线高清直播| 亚洲白拍色综合图区| 久久精品久久精品亚洲人| 91久久精品视频| 91色视频在线观看| 精品成人乱色一区二区| 久久成人精品视频| 成人午夜黄色影院| 97色在线视频观看| 欧美日韩国产在线| 亚洲激情在线视频| 久久精品精品电影网| 久久人人爽亚洲精品天堂| 中文日韩在线视频| 亚洲人成在线观看| 国产精品视频永久免费播放| 国产日产久久高清欧美一区| 国产精品久久久久久久av电影| 米奇精品一区二区三区在线观看| 国产精品视频xxxx| 中文字幕日韩欧美在线视频| 国产一区二区三区视频|